]> git.donarmstrong.com Git - lilypond.git/commitdiff
* VERSION (MY_PATCH_LEVEL): make 1.7.0
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 15 Sep 2002 21:35:11 +0000 (21:35 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 15 Sep 2002 21:35:11 +0000 (21:35 +0000)
222 files changed:
CHANGES [deleted file]
ChangeLog
Documentation/bibliography/computer-notation.bib
Documentation/misc/CHANGES-1.5 [new file with mode: 0644]
Documentation/misc/ChangeLog-1.5 [new file with mode: 0644]
Documentation/misc/GNUmakefile
Documentation/topdocs/INSTALL.texi
Documentation/user/appendices.itely
Documentation/user/invoking.itexi
Documentation/user/preface.itely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
GNUmakefile.in
NEWS
THANKS [new file with mode: 0644]
VERSION
buildscripts/lilypond-login.sh
buildscripts/lilypond-profile.sh
buildscripts/ps-to-gifs.sh [deleted file]
buildscripts/ps-to-pngs.sh [deleted file]
debian/changelog
debian/control
debian/control.foka
debian/rules
flower/include/array.icc
flower/include/file-path.hh
flower/include/parray.hh
flower/include/polynomial.hh
flower/polynomial.cc
input/SondagMorgen/SondagMorgenOmkvaedVolta2.ly [deleted file]
input/SondagMorgen/SondagMorgenOmkvaedVolta3.ly [deleted file]
input/SondagMorgen/SondagMorgenOutro.ly [deleted file]
input/mutopia/J.S.Bach/wtk1-fugue2.ly
input/mutopia/R.Schumann/romanze-op28-2.ly
input/regression/beam-shortened-lengths.ly
input/regression/completion-heads-polyphony.ly [new file with mode: 0644]
input/regression/lyric-align.ly
input/regression/lyric-combine-polyphonic.ly [new file with mode: 0644]
input/regression/molecule-hacking.ly
input/regression/prefatory-empty-spacing.ly [new file with mode: 0644]
input/regression/property-once.ly [new file with mode: 0644]
input/regression/script-stacked.ly
input/regression/system-extents.ly
input/regression/tuplet-properties.ly
input/sondag-morgen/GNUmakefile
input/sondag-morgen/sondag-morgen-intro.ly
input/sondag-morgen/sondag-morgen-omkvaed-volta1.ly
input/sondag-morgen/sondag-morgen-omkvaed-volta2.ly
input/sondag-morgen/sondag-morgen-omkvaed-volta3.ly
input/sondag-morgen/sondag-morgen-omkvaed.ly
input/sondag-morgen/sondag-morgen-outro.ly
input/sondag-morgen/sondag-morgen-vers-volta1.ly
input/sondag-morgen/sondag-morgen-vers-volta2.ly
input/sondag-morgen/sondag-morgen-vers.ly
input/sondag-morgen/sondag-morgen.ly
input/test/GNUmakefile
input/test/accid.ly
input/test/ancient-font.ly
input/test/ancient-time.ly
input/test/bar-number-every-fifth.ly [new file with mode: 0644]
input/test/boxed-molecule.ly
input/test/chords.ly
input/test/clef-end-of-line.ly [new file with mode: 0644]
input/test/custos.ly
input/test/empty-staffs.ly [new file with mode: 0644]
input/test/mensural-ligatures.ly
input/test/poly-metric.ly [new file with mode: 0644]
input/test/rests.ly
input/test/stem-extend.ly
input/test/tab-staff.ly [deleted file]
input/test/tablature.ly
input/trip.ly
input/tutorial/brahms-tweaked.ly
lily/GNUmakefile
lily/accidental.cc
lily/all-font-metrics.cc
lily/auto-change-iterator.cc
lily/bar-check-iterator.cc
lily/bar-line.cc
lily/bar-number-engraver.cc
lily/beam.cc
lily/bezier.cc
lily/break-align-interface.cc
lily/chord-tremolo-engraver.cc
lily/chord-tremolo-iterator.cc
lily/clef-engraver.cc
lily/clef.cc
lily/completion-note-heads-engraver.cc
lily/custos.cc
lily/cxx-function-smob.cc [deleted file]
lily/engraver.cc
lily/fingering-engraver.cc
lily/folded-repeat-iterator.cc
lily/font-metric.cc
lily/gdb.cc
lily/global-translator.cc
lily/grace-iterator.cc
lily/grace-music.cc
lily/grob-pq-engraver.cc
lily/grob.cc
lily/include/accidental-interface.hh
lily/include/audio-item.hh
lily/include/auto-change-iterator.hh
lily/include/beam.hh
lily/include/change-iterator.hh
lily/include/chord-tremolo-iterator.hh
lily/include/cxx-function-smob.hh [deleted file]
lily/include/folded-repeat-iterator.hh
lily/include/font-metric.hh
lily/include/global-translator.hh
lily/include/grace-iterator.hh
lily/include/grob.hh
lily/include/interpretation-context-handle.hh
lily/include/item.hh
lily/include/lily-guile.hh
lily/include/lyric-combine-music-iterator.hh
lily/include/molecule.hh
lily/include/music-iterator.hh
lily/include/music-wrapper-iterator.hh
lily/include/musical-request.hh
lily/include/output-property-music-iterator.hh
lily/include/part-combine-music-iterator.hh
lily/include/percent-repeat-iterator.hh
lily/include/property-iterator.hh
lily/include/request-chord-iterator.hh
lily/include/sequential-iterator.hh
lily/include/sequential-music-iterator.hh
lily/include/simple-music-iterator.hh
lily/include/simultaneous-music-iterator.hh
lily/include/source-file.hh
lily/include/spanner.hh
lily/include/time-scaled-music-iterator.hh
lily/include/translator.hh
lily/include/virtual-font-metric.hh [new file with mode: 0644]
lily/interpretation-context-handle.cc
lily/item.cc
lily/key-signature-interface.cc
lily/kpath.cc
lily/lexer.ll
lily/ligature-head.cc
lily/lily-guile.cc
lily/lyric-combine-music-iterator.cc
lily/lyric-combine-music.cc
lily/main.cc
lily/mensural-ligature-engraver.cc
lily/molecule.cc
lily/music-iterator.cc
lily/music-wrapper-iterator.cc
lily/music.cc
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/note-head.cc
lily/note-spacing.cc
lily/output-property-engraver.cc
lily/paper-def.cc
lily/parser.yy
lily/part-combine-music-iterator.cc
lily/part-combine-music.cc
lily/percent-repeat-engraver.cc
lily/percent-repeat-iterator.cc
lily/property-iterator.cc
lily/request-chord.cc
lily/rest.cc
lily/score-engraver.cc
lily/score.cc
lily/script-column.cc
lily/script-engraver.cc
lily/sequential-iterator.cc
lily/sequential-music-iterator.cc
lily/sequential-music.cc
lily/simple-spacer.cc
lily/simultaneous-music-iterator.cc
lily/simultaneous-music.cc
lily/source-file.cc
lily/spanner.cc
lily/staff-spacing.cc
lily/stem-engraver.cc
lily/stem.cc
lily/syllable-group.cc
lily/system-start-delimiter.cc
lily/tab-note-heads-engraver.cc
lily/text-engraver.cc
lily/text-spanner-engraver.cc
lily/time-scaled-music-iterator.cc
lily/time-scaled-music.cc
lily/time-signature.cc
lily/translator-def.cc
lily/translator.cc
lily/tuplet-bracket.cc
lily/unfolded-repeat-iterator.cc
lily/virtual-font-metric.cc [new file with mode: 0644]
ly/a3-init.ly [new file with mode: 0644]
ly/engraver-init.ly
ly/performer-init.ly
ly/property-init.ly
make/generic-rules.make
make/lilypond-vars.make
make/lilypond.lsm.in
make/lilypond.mandrake.spec.in
make/lilypond.redhat.spec.in
make/lilypond.suse.spec.in
make/ly-rules.make
make/lysdoc-rules.make
make/mutopia-rules.make
mf/GNUmakefile
mf/feta-eindelijk.mf
mf/parmesan-heads.mf
po/da.po
po/fr.po
scm/documentation-lib.scm
scm/drums.scm
scm/font.scm
scm/grob-description.scm
scm/lily.scm
scm/music-functions.scm
scm/music-property-description.scm
scm/output-lib.scm
scm/tex.scm
scm/translator-property-description.scm
scripts/lilypond-book.py
scripts/ly2dvi.py
tex/titledefs.tex

diff --git a/CHANGES b/CHANGES
deleted file mode 100644 (file)
index 5f42581..0000000
--- a/CHANGES
+++ /dev/null
@@ -1,829 +0,0 @@
-1.5.23
-======
-
-* Bugfix: be anal about slur dimensions.
-
-* Bugfix: insert extra margin around pixmaps.
-
-* lilypond-book: magnification option for EPS
-
-1.5.22.jcn1
-===========
-
-* Resurrected experimental sketch output, now with dispatch.
-
-* Bugfix: prefix directory defaults to DIR_DATADIR if not defined.
-
-* Rune: more reliable repeat dots (WARNING: FONT CHANGED)
-
-1.5.22.hwn1
-===========
-
-* Dashed slur bugfix. 
-
-* GUILE 1.4 compatibility.
-
-
-1.5.22
-======
-
-1.5.21.hwn1
-===========
-
-* Crop EPS files before rendering in lilypond book. This makes make web
-a lot faster.
-
-* Added links to internals documentation
-
-* Small dimcache (darn gcc-2.95) bugfixes.
-
-* Implemented Engraver::top_engraver ().
-
-* Completion_heads_engraver: engrave tied notes across bar lines
-automatically. Related changes:
-
-  - duration-log of Note head can be larger than 2
-
-  - make public class Grob_pitch_tuple
-
-* Make old spacing engine default again. The new one is still rather
-sucky.
-
-1.5.21
-======
-1.5.20.jcn1
-===========
-
-* Fixed direct PostScript output, and changed default fonts.
-
-* Bugfix: automaticMelismata in refman (huh, or should lily be changed?)
-
-* pktrace:
-
-      cp mf/out/feta20.* $HOME/usr/src/sketch-0.7.8/Resources/Fontmetrics
-      echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspec\ific,feta20' >> $HOME/usr/src/sketch-0.7.8/Resources/Fontmetrics/std.sfd
-
-
-1.5.3.lec1
-==========
-abc2ly fixes:
-
-      fix to Q: support
-      partial fix for tuplet parsing
-      fix for blank first T: line
-      escape "'s in header lines
-      fix for dotted breve in whole note duration
-      M:none no longer attempts to insert "\time none"
-
-
-1.5.20.uu1
-==========
-
-* etf2ly robustness fixes
-* Rewrote outputting backend. Now uses GUILE modules.
-
-* Line breaking bugfix.
-
-* Bugfix: Unfolded_repeat_iterator::add_repeat_command().
-
-1.5.20
-======
-
-1.5.19.jcn3
-===========
-
-* Sketch output:
-
-  - Sketch uses feta font.
-  - Fix to linewidth and feta fontsize.
-   - mf-to-table: write dummy values in afm to make sketch happy.
-  - Fixes to glyphs: rectangles beziers work now.
-   - Bugfix: sketch.scm: use primitive-eval.
-
-* Sketch and feta Type1 fonts:
-   - textrace:
-      wget http://www.inf.bme.hu/~pts/textrace-latest.tar.gz
-      tar xzf textrace-latest.tar.gz
-      (cd autotrace-0.27ap; ./configure; make)
-      ./traceall.sh feta20 feta20.pfb $HOME/usr/src/lilypond/mf/out
-
-  - copy mf/out/feta20.* to sketch/Resources/Fontmetrics:
-
-   - append to sketch/Resources/Fontmetrics/std.sfd:
-      echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspecific,feta20' >> $HOME/usr/src/sketch/sketch/Resources/Fontmetrics/std.sfd
-
-   - Hmm, then find that
-
-     + Sketch accesses characters by name, ie, the
-clefs      name characters have in default text fonts.  Luckily, textrace
-      mangles the feta names too.  Sadly, textrace chooses different names
-      for characters > 128.
-
-    + Textrace mangles font name by prepending `TeX-'.  Doesn't seem to
-      pose a big problem; we'll have to pefix `TeX-' to feta fonts.
-
-    + Sadly, only the sketch-0.7.x is happy with the feta type1 font, but
-      printing is not yet implemented?
-
- * Remove modules directory (again?).
-
-
-1.5.18.moh1
-===========
-
-* Further work on more flexible control of lyric alignment.
-   - new properties "alignment", "ignore-length-mismatch", "begin-alignment" a\nd "end-alignment" to control non-centered lyric alignment
-
-
-1.5.19.hjj1
-===========
-
-* Added \portato.
-
-1.5.18.jcn1
-===========
-
-* Moved python modules to ./python.
-
-* Better python module stepmake support.
-
-* Bugfix ly2dvi etc: LILYPONDPREFIX should override datadir.
-
-1.5.18.hwn2
-===========
-
-* Put lilylib back into ly2dvi
-
-* Cache symbols for {get,set}_{grob,music}_property and
-{get,set}_property.  Speedup: about 20 percent.
-
-* Remove C++ version of midi2ly
-
-* Inline Grob::parent_l (Axis), String::String() speedup 2 % 
-
-* First try at Sketch (sketch.sourceforge.net) output.
-
-
-1.5.18.rz1
-==========
-
-* subdivideBeams fix - setting property right after beam definition no
-  longer affects that beam.
-
-* Minor docu updates, accidental cleanups and example updates
-
-* Added Accidental grob properties paren-cautionaries and
-  cautionary-size controlling the appearance of cautionary accidentals
-
-1.5.18
-======
-1.5.17.jcn6 - aka: `pgwit!  Ah, dacht dat-i zo wel aardig was.'
-===========
-
-* Some more hacking at midi2ly.py:
-   - options and stuff: moved to library for ly2dvi, midi2ly, mup2ly,
-       update-lily
-   - handle keys and note names
-   - simple quantising
-   - handle tuplets and silly durations
-   - guess clef
-   - don't include empty staffs in score
-   - print relative pitches by default
-   - don't repeat duration by default
-   - bugfix: allow 8th notes too
-   - include new version of input/test/midi-scales.ly
-   - added barchecks + fix
-   - bugfix for relative mode
-
-* Shorter MIDI creation texts.
-
-* Bugfix: Key_change_req::transpose: don't deliver reversed list.
-
-* Bugfix: Key_performer::create_audio_elements: transpose list to
-`do', before determining tonality.
-
-1.4.8.moh1
-==========
-
-* new property "end-alignment" to control non-centered lyric alignment
-
-1.5.17.hwn1
-===========
-
-* Be quicker in Grob::handle_broken_dependencies().
-
-* --strict option for abc2ly, exit if an error is found.
-
-* GUILE 1.3.4 fix.
-
-
-1.5.17
-======
-
-1.5.16.hjj2
-===========
-
-* Emacs-mode: Inserting tags
-
-* Enable python2.1/Python.h
-
-1.5.16.hwn1
-===========
-
-* Add unfold-repeats function (Rune Zedeler!) to standard init SCM file.
-
-* Bugfix: spacing is no longer confused by coupled clefs, where one of the
-clefs is loose, and the other not.
-
-* Robustness fix for Slur. Don't crash if attachment not set.
-
-* Arpeggios can now have arrows on the top or bottom to determine
-their direction. (MF code by Chris Jackson)
-
-* Symbol cache bugfix in system-start-delimiter.cc -- may switch
-symbol cache off for gcc 2.96?
-
-* MikTeX PDF detection bugfix (Mats Bengtsson)
-
-* Some more random hacking at midi2ly.py. (jcn1)
-
-* Inline unsmob_XXX functions.  Speedup of 6% on wtk1-fugue2.
-
-1.5.15.jcn1
-===========
-
-* Fixes for latest guile cvs.
-
-* Add --enable-optimising flag to configure (Huh?).
-
-* Only inline string utlis when optimising.
-
-* Compile fix.
-
-1.5.15.rz1
-==========
-
-* added property autoReminders, automatically creating reminder
-  accidentals. - major changes to accidental-engraver.
-
-1.5.15.hwn1
-===========
-
-* Junk translator-description.scm
-
-* Make Repeated_music use 'element and 'elements in stead of 'body and
-'alternatives.  Associated changes in parser and music-sequence.cc.
-
-* Change Part_combine_music and Lyric_combine_music to use 'elements
-music property.
-
-* Porrectus patch (Juergen Reuter)
-
- - Rewrote code for vaticana style porrectus grob; the solid shape is
-  now drawn as a single bezier sandwich rather than composed from a
-  couple of misused slurs.  Looks now much nicer.
-
- - Added code to forbid line-breaking inbetween a porrectus
-  (preliminary; to be moved to ligature engraver framework).
-
- - Added auto-properties property for automatic determination of grob
-  properties add-stem and stem-direction from musical context.
-
- - Small clean-ups.
-
-
-1.5.14.jcn6
-===========
-
-* Some more random hacking at midi2ly.py.
-
-* Slightly better doco for r, s and \skip, with examples.
-
-* Bugfixes: add-html-footer.py and @MAILADDRESS@.
-
-* Some website related fixes (thanks Tiggr).
-* Ugly hack in add-html-footer for disabling tutorial and refman links
-in sidebar.
-
-* Guile > 1.4 compilation fixes.
-
-* Website bugfix: mailto: (thanks David Boersma).
-
-1.5.14.hwn1
-===========
-
-* Rename: Local_key_engraver to Accidental_engraver
-
-* Add documentation for accidentals grob property.
-
-* Don't make double accidentals even if two of the same notes are
-specified. (Thanks Rune)
-
-* Search all staff-bars for non-empty barline to determine type. This
-fixes span-bars with the lowest staff hara-kiried. (Thanks Rune)
-
-
-1.5.14.rz1
-==========
-
-* Less buggy beam-split
-
-* Added subdivideBeams, subdividing beams on beats
-
-1.5.14
-======
-
-1.5.13.hwn2
-===========
-
-* Bugfix: revert font-relative-size for grace Accidentals
-
-* Bugfix: hara kiri'd piano staffs doesn't take space anymore.
-
-* Bugfix: reinstate rest-collisions.
-
-* Bugfix: key items have the c0 position again.
-
-* Make \property Voice.GrobName = \turnOff work again.
-
-* More intelligent symbol-cache, in less code. Turned off by default, doesn't
-work with -O2 yet.
-
-* Documentation fixes: change documentation of Moment and make-moment,
-add Translator::{name,description}
-
-* Junk STL implementation of Scheme_hash_table in favor of GUILE
-hashtables with automatic resizing. 
-
-
-1.5.12.jcn2
-===========
-
-* half-baken --with-kpathsea configuration fix.
-
-* ly2dvi: add `.' to TEXINPUTS to catch broken TEXINPUTS settings.
-
-* guile-1.4 compile fix.
-
-1.5.12.hwn1
-===========
-
-* Move engraver descriptions into the C code.  They are accessible
-from Scheme. Grand rehacking to make stuff work again.
-
-* Precompute which engravers are eligible to acknowledge a certain
-type of grob. Speedup: approx 10 % on interpretation phase.
-
-
-1.5.12
-======
-
-1.5.11.jcn1
-===========
-
-* Add -p flag to package-diff.py's diff invocation, to show changed function.
-
-* Add configure checks for python headers.
-
-* Make midi module.
-
-1.5.11.hwn1
-===========
-
-* Allow breaks at measures starting with grace notes.
-
-* Bugfix: don't give up when there is one entirely unspaceable
-measure/line.
-
-* Midi module: many bugfixes.
-
-* midi2ly python blurble.
-
-
-1.5.11
-======
-
-1.5.10.jcn3
-===========
-
-* include python midi parser.
-
-* stepmake updates.
-
-* add .cvsignore patterns for making patches the standard, manual way.
-
-* midi2ly: support chords, duration conversion rewrite.
-
-* parser.yy: Guile > 1.4 compilation fix; scm_unprotect_object is deprecated.
-
-1.5.10.hwn1
-===========
-
-* Rational bugfix.
-
-* Cleaned up definitions of SystemStartDelimiter
-
-* WTK fix.
-
-* Porrectus patch (Juergen Reuter):
-
-- Syntax change: \porrectus -> \~
-- New porrectus properties: porrectus-width, line-thickness.
-- Bugfix: left<->right confusion in porrectus-engraver.cc.
-- Bugfix: Box dimensions for horizontal slope molecule in porrectus.cc.
-- Enhanced mensural style porrectus shape, considering optical
-  illusion in vertical endings due to slope.  Simplified drawing.
-- Code clean-up.
-
-1.5.10
-======
-
-1.5.9.hjj2
-==========
-* Emacs-mode: Keyboard shortcuts, separated identifiers from keywords
-and spacing not necessary in font-locking.
-
-1.5.9.jcn3
-==========
-
-* add-html-footer.py: use html <title> as fallback title for pages
-where @WEB-TITLE@ is not defined.
-
-* Bugfix: stepmake: don't go building executables all over the place,
-if NAME is set in environment.  Some cleanups. 
-* add-html-footer.py: remove href to self.  Substitute @at-variables@
-defined in html comments.  Any occurrence of
-
-       <!-- @foo@=bar -->
-
-in the html page, will subsequently substitute any occurrence of @foo@
-in the same html page with `bar'.
-
-* Bugfix: update-lily: remove unprotected gettext.py include.
-
-* po update.
-
-* windows doc update.
-
-1.5.9.hwn3
-==========
-
-* Optimizations:
-  - speed up Rational::operator+= 
-  - speed up Rational::compare ()
-  - don't store origins if point-and-click not set. 
-
-* \figures input mode:  \figures { <4 6+> <3- 5>2. } 
-
-* Obscure bugfix: call kpsewhich with --format for mfplain.
-
-* Don't put  volta bracket on top of following note (vertically).
-
-* Collision fixes.
-
-* Crude figured bass support (supports rests as well, now)
-
-* Bugfix: various collision issues, updated regtest example.
-
-* Porrectus support (Juergen Reuter)
-
-1.5.9
-=====
-
-1.5.8.uu1
-=========
-
-* Mensural rests (Juergen Reuter)
-
-* Swedish translation (Thanks to the translation project)
-
-* Bugfix: down 8th flag restored.
-
-* Bugfix: span-bars and hara-kiri.
-
-* More advanced collisions: handle meshed chords as well.
-
-1.5.8.jcn1
-==========
-
-* Add mktextfm wrapper for windows (thanks Mats).
-
-1.5.8.hjj1
-==========
-
-* Emacs-mode: new keywords, reserved words, notenames and brackets are
-font-lock-keywords; implementation encourages spacing/indenting.
-
-
-1.5.8
-=====
-1.5.7.hwn1
-==========
-
-* reinclude input/bugs/*.ly
-
-* Mensural flags (Juergen Reuter)
-
-* Fixed problem with hanging Xdvi from redhat 7.x. See also
-http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=52089
-
-* Bugfix: don't crash if kpse_find_file returns 0.
-
-* Bugfix: don't allocate \outputscale for every file.
-
-* Bugfix: mixing different rhythms on one staff doesn't muck up the
-spacing that much.
-
-1.5.7.hjj2
-==========
-
-* Add PS-compilation, PS-viewing and MIDI-play in LilyPond
--Emacs-mode.  (Heikki Johannes Junes).
-
-* Add common finnish names for notes
-
-
-1.5.6.jcn2
-=========
-* Use Cygwin included Python; drop Windows Python and workarounds.
-
-* Include make/lilypond.mandrake.spec (unchecked!) and README.mandrake.
-
-* Comment out two non existing examples in regression test, add one
-missing from 1.5.5 distribution.
-
-* Revert silly grace-with-braces stuff in tutorial.
-
-* Add short crescendo bug to input/bugs.
-
-* Update and bit more verbose download instructions in INSTALL, 
-fix some links on ftp.lilypond.org.
-
-
-1.5.6.hwn1
-==========
-
-* Grace note bugfixes.
-
-* Move staff-adjacency detection (for the spacing engine) to
-Separating_group_spanner.
-
-* Loose column support: clef changes, key changes may be folded underneath
-notes in a different staff. See input/regression/spacing-folded-clef.ly.
-Changes were made to
-
-  - Separating_group_spanner: decide which columns are loose
-
-  - Simple_spacer, New_spacing_spanner: only look at non-loose columns.
-
-  - Line_of_score: set horizontal positions for loose columns.
-1.5.6
-=====
-
-1.4.6.mb1
-=========
-
-* Allow for duplicated articulation scripts with different direction.
-
-* Added new ornaments: \upmordent, \downmordent, \pralldown, \prallup,
-  \lineprall, \thumb, \comma (to be used with scriptHorizontal = ##t),
-  see also input/test/trill.ly. [WARNING: FONT UPDATE!]
-
-* Bug fix: staccato dot placement.
-
-1.5.5.jr1
-=========
-
-* recent ancient-font.ly development branches manually merged and
-  updated;
-
-* added enhanced mensural minima/fusa noteheads (30 degrees rhomb
-  style); the former 45 degrees quadratic shapes are now available
-  under notehead style "neo_mensural"; [WARNING: FONT UPDATE] 
-
-* minor ancient font corrections (in particular, enhanced set_char_box()
-  arguments).
-
-
-1.5.5.jcn2
-==========
-
-* input/bugs:
-  - Autogenerate bugs document from all .ly's.
-  - Add texidoc to lots of examples.
-  - Junk or move fixed examples to regression test.
-  - Move examples that crash lilypond to input/no-notation.
-  - Update examples.
-
-1.5.5.hwn1
-==========
-
-* Grace property fixes.
-
-* More grace nesting bugfixes.
-
-1.5.5
-=====
-
-1.5.4.jcn2
-==========
-
-* Spelling fixes, notably staffs->staves, except for ChangeLogs.
-
-* Removed `Default' from accidental comment names.
-
-* Compile fixes.
-
-* Fixed off by one error for point and click.
-
-* Website fixes, found bug in grace note stem lengths.
-
-1.5.4.hwn1
-==========
-
-* Ancient font update [WARNING FONTS CHANGED!] (Juergen Reuter)
-
-* New_spacing_spanner: revised spacing generation.
-
-* Default neutral direction set to down. 
-
-* Junk hash table  from flowerlib
-
-* Bugfix: grace nesting error
-
-* Bugfix: don't try schedule next bar when were on a grace moment.
-
-* Bugfix: set measurePosition especially for music starting with
-grace.
-
-1.5.3.hwn1
-==========
-
-* midi2ly bugfixes: don't print ';' in .ly output.
-
-* small cleanup of input/bugs/
-
-* bugfix: nested grace notes; added input/regression/grace-nest.ly
-
-* Bugfix: add double alterations to keyAccidentalOrder (Mats)
-
-* Fixes for PostScript beams and stems.
-
-1.5.2.hwn1
-==========
-
-* Starting pagenumber (Mark Hindley)
-
-* Ancient font patch (Juergen Reuter) [WARNING: FONT UPDATE!]
-
-* Bugfix: don't  put grace beams on non grace notes, and vice versa.
-
-* etf2ly:
-  - miserable try at importing repeatbars and volta brackets;
-  - import articulation defs (IX tag)
-  - revamped file reading logic. Now much cleaner.
-
-* Experimental regular-spacing support: try to space regular runs of
-notes equidistantly.
-
-1.5.2.jcn2
-==========
-
-* Flex is fixed in Debian/unstable.  Update documentation accordingly.
-
-* Guile 1.3.4 compile fix.
-
-* Add trill line type, see input/test/trill.ly.
-
-* Dvips bugs workarounds:
-  - Draw filledbox in tex for now.  Test ps code using
-
-     lilypond -e '(define ps-testing 1)'
-
-  - Extend stems only half way into beam.
-
-* Change order of includes in tex/lilyponddefs.tex so that feta font
-can be used a little easier, like:
-
-    title="TeX \fetachar\fetasharp"
-
-* Update stepmake/bin config.sub, config.guess.
-
-1.5.2
-=====
-
-1.5.1.hwn1
-==========
-
-* small bugfixes for grace-init.ly
-
-* Bugfix: don't mess up spacing when combining different tuplets.
-
-* Small bugfixes for lilypond-mode.el.
-
-* property-init.ly: bugfix for dot directions in polyphonic music.
-
-1.5.1.jcn3
-==========
-
-* Bugfix: text2html: escape entities inside <pre>.
-
-* Added some template .ly's for evaluation.
-
-* Make blot work without -fps too.
-
-* Use blot diameter for postscript beams and boxes.
-
-* Guile-1.5.0-cvs updates and Guile-1.4.x compatibility.
-
-* Beam knee fix.
-
-* Now really included lexer-gcc-3.0.patch.
-
-* Make Voice context accept Thread again; this fixes MIDI output for music
-that uses Thread contexts.
-
-* Removed debug printing from chord-name.scm.
-
-1.5.0
-=====
-1.5.0.jcn1
-==========
-
-* Added feature to ly2dvi to find feta pfa font files used in a
-postscript file to make printing of direct postscript a bit easier:
-
-    lilypond -fps input/trip.ly
-    cat $(ly2dvi -f trip.ps) trip.ps | lpr
-
-* Reincluded 1.4.3.jcn2.
-
-* Website fixes.
-
-* Ly2dvi now leaves .tex and .latex output if latex fails, and cleans
-the temp dir if anything fails.
-
-* Fixes for windows scripts.
-
-1.5.0.uu1
-=========
-
-* Hara kiri and span-bar.
-
-* Junk old grace stuff.
-
-* Don't crash on grace notes in MIDI output.
-
-
-
-1.5.0
-=====
-
-* 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.jcn3
-==========
-  
-TODO: look at other filledbox'es (stafflines and barlines don't match up).
-
-* Testing code off by default.  On: -e "(define ps-testing 1)" -fps
-
-* Output via TeX/dvips still gives problems.  Use direct postscript
-output for real testing.
-
-* 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 f6b5d401ac42ff47d136a3c383573096e8dd1007..c9f34af08ca122d588c065bf9d4d405f79044685 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-09-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * VERSION: Add CVS HEAD trap.
+       * VERSION (MY_PATCH_LEVEL): make 1.7.0
 
-2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: release 1.6.0 
-
-       * make/lilypond.redhat.spec.in: don't dist input/ separately
-       anymore
-
-       * Documentation/user/latex-example.latex: restore from old version
-
-       * Documentation/topdocs/index.tely: remove @settitle
-
-       * Documentation/topdocs/README.texi: small fixes.
-
-       * lily/self-aligment-interface.cc (centered_on_parent): only
-       return center if extents not empty.
-
-       * scm/music-functions.scm (unfold-repeats): typo,  
-
-       * mf/feta-bolletjes.mf: use resolution independent variables.
-
-2002-08-19  janneke  <janneke@blauw.xs4all.nl>;
-
-       * lily/stem.cc (calc_stem_info): Fix [a8 a32].
-
-       * Documentation/index.texi (Top): Templates url fix, small url
-       name changes.
-
-       * regular-spacing-engraver.cc:
-       * scm/grob-property-description.scm: Remove regular-distance-to.
-
-       * input/test/spacing-regular.ly:
-       * lily/regular-spacing-engraver.cc: Remove.
-
-2002-08-18  janneke  <janneke@blauw.xs4all.nl>
-
-       * mensural-ligature.cc: *** empty log message ***
+       * Documentation/user/refman.itely: patch by Graham Percival
 
-       * tab-note-heads-engraver.cc: * lily/tab-note-heads-engraver.cc:
-       * scm/translator-property-description.scm: Add tablatureFormat.
+       * scripts/lilypond-book.py (make_pixmap): let gs write to
+       outputfile directly
 
-       * input/test/staff-bracket.ly: Update.
+2002-09-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * regular-spacing-engraver.cc:
-       * lily/regular-spacing-engraver.cc: Add regular-distance-to.
+       * lily/simultaneous-music-iterator.cc
+       (Simultaneous_music_iterator): init children_list_
 
-       * ligature-bracket.cc, ligature-engraver.cc, ligature-head.cc,
-       mensural-ligature-engraver.cc, mensural-ligature.cc:
+       * lily/part-combine-music-iterator.cc
+       (Part_combine_music_iterator): init state_
 
-       * lily/mensural-ligature-engraver.cc:
-       * scm/grob-property-description.scm: Add head-width, join-left,
-       primitive.
+       * lily/sequential-iterator.cc (Sequential_iterator): init cursor_
 
-2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * lily/percent-repeat-iterator.cc (Percent_repeat_iterator): init
+       child_iter_.
 
-       * ambitus.cc, parser.yy:
-       * Documentation/user/introduction.itely: small corrections.
+       * lily/sequential-iterator.cc (Sequential_iterator): init list_
 
-       * lily/parser.yy (property_def): Ugh. Switch off
-       internal-type-checking for autoBeamSettings.
+       * lily/translator-def.cc (Translator_def): make a GC proof copy
+       constructor.
 
-2002-08-18  janneke  <janneke@blauw.xs4all.nl>
+2002-09-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * music.cc (internal_set_mus_property): [!NDEBUG] Remove, use
-       abort instead of assert.
+       * lily/percent-repeat-iterator.cc (process): quit iter.
 
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * lily/simultaneous-music-iterator.cc
+       (Simultaneous_music_iterator): protection bugfix.
+       (get_pending_events): bugfix: don't use s twice.
 
-       * scm/grob-property-description.scm: Remove regular-distance-to.
-
-       * input/test/spacing-regular.ly:
-       * lily/regular-spacing-engraver.cc: Remove.
+       * debian/: debian patches by Anthony Fok.
        
-2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * input/mutopia/J.S.Bach/wtk1-fugue2.ly: staff switch fixes.
-
-       * Documentation/user/lilypond-book.itely: small cleanups
-
-       * Documentation/user/*.itely: fix overfull hboxes. 
-
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/tutorial.itely (A piano excerpt): 
-       * Documentation/user/introduction.itely (Introduction): Typo fix.
-
-       * input/test/header-ifelse.ly: Bugfix: call numbers->string only
-       on first three elements of ly-version list.
-
-       * input/test/trills.ly: Comment out \comma.
-
-       * lily/tab-note-heads-engraver.cc: 
-       * scm/translator-property-description.scm: Add tablatureFormat.
-
-       * input/test/staff-bracket.ly: Update.
-
-       * lily/regular-spacing-engraver.cc: Add regular-distance-to.
-
-       * input/test/orchestscore.ly:  
-       * input/test/part-combine-moments.ly:
-       * input/test/part-combine-staff.ly: markScriptPadding ->
-       RehearsalMark #'padding.
-
-2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * Documentation/user/introduction.itely: small corrections.
+       * lily/clef-engraver.cc (create_clef): bugfix for octavate clef
+       (thanks Rune!)
 
-       * scm/translator-property-description.scm (tablatureFormat):
-       describe property.
+       * Documentation/user/tutorial.itely: replace grob by
+       object. Explain \once.
 
-       * lily/parser.yy (property_def): Ugh. Switch off
-       internal-type-checking for autoBeamSettings.
+       * scm/music-property-description.scm (once): add 'once
 
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-09-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/mensural-ligature-engraver.cc:
-       * scm/grob-property-description.scm: Add head-width, join-left,
-       primitive.
-       
-       * lily/mensural-ligature.cc: 
-       * lily/ligature-bracket.cc: 
-       * scm/grob-property-description.scm: 
-
-       * lily/ligature-head.cc: Add ligature-primitive-callback.
-
-       * input/test/beam-control.ly: 
-       * input/test/bar-script-visibility.ly: Update.
-
-       * lily/music.cc (internal_set_mus_property): [!NDEBUG] Remove, use
-       abort instead of assert.
+       * lily/simultaneous-music-iterator.cc (skip): call quit()
+       when an iterator exits early.
 
-2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-09-13  Juergen Reuter  <reuter@ipd.uka.de>
 
-       * input/test/ambitus.ly: Comment out ambitus until anal-proof.
+       * lily/rests.ly: added comment on bogus warnings about missing flags
 
-       * buildscripts/mf-to-table.py (write_fontlist): change
-       extra-extent-X extra-X-extent.
+       * lily/clef.cc, lily/rests.cc: added warning when font character
+       lookup fails.
 
-       * scm/music-property-description.scm (label): Typecheck markup?
-       (was string?).
+       * lily/rests.cc: workaround: consider missing ledgered rests in
+       ancient font.
 
-       * Documentation/user/refman.itely (Tablatures basic): Change
-       TabStaff @lilypond snippets to @example until TabStaff is
-       anal-proof.
+       * lily/rests.cc: bugfix: cleaned up font lookup code that handles
+       special cases of styles 'default' and 'classical'.  This should
+       also fix the behaviour of lily/multi-measure-rest.cc, which so far
+       did not consider styles 'default' and 'classical'.
 
-2002-08-18  Rune Zedeler <rune@zedeler.dk>
+2002-09-13  Rune Zedeler  <rune@zedeler.dk>
 
-       * mf/feta-klef.mf: (another) white pixels bug in g-clef fixed.
+       * scm/drums.scm: "set" the automatic properties instead of
+       "override", (whoops!)
        
-2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-09-13  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
 
-       * lily/include/lily-guile.hh (LY_DEFINE_NOARGS): Remove.
+       * ly/a3-init.ly, scripts/ly2dvi.py (ly_paper_to_latexpaper): 
+       Add support for A3 paper.
 
-       * lily/grob-property.cc (internal_set_grob_property): Revert oops.
+2002-09-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/input.cc (message): 
-       * flower/warn.cc (message): Flush output.
+       * lily/tuplet-bracket.cc (brew_molecule): don't crash on broken
+       tuplet brackets.
 
-       * po/lilypond.pot: Run make po-replace.
+       * lily/property-iterator.cc (do_quit): add finalization functions
+       to undo property settings.
 
-       * Documentation/user/GNUmakefile (LILYPOND_BOOK_FLAGS): be anal
-       with type checks.
+       * lily/parser.yy (property_def): syntax for \once \property ....
 
-       * Documentation/GNUmakefile (LILYPOND_BOOK_FLAGS): 
-       * input/regression/GNUmakefile (LILYPOND_BOOK_FLAGS):
-       * input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): 
-       * Documentation/user/invoking.itexi: 
-       * lily/scm-option.cc:
-       * lily/main.cc: Debugging options: ly-set-option (was:
-       set-lily-option).
+       * lily/note-spacing.cc (get_spacing): don't get crazy when there
+       is no (live) stem.
 
-       * lily/scm-option.cc (ly_option_usage): New function.
+       * lily/my-lily-lexer.cc: new keyword \once
 
-2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * lily/global-translator.cc (apply_finalizations): new function
+       (add_finalization): new function
 
-       * lily/parser.yy (script_abbreviation): accept -_ script.
+       * input/regression/property-once.ly: new file
 
-       * ly/script-init.ly (dashUnderscore): add NOTE-_ == portato (dash
-       and dot)
+2002-09-10  Juergen Reuter  <reuter@ipd.uka.de>
 
-       * scripts/lilypond-book.py (re_dict): add spaces after command sequences
-       (LatexPaper.find_latex_dims): run latex in nonstopmode
+       * lily/stem.cc: added warning when font symbol not found;
+       small cleanups
 
-       * input/font-body.ly: remove.
+2002-09-11  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * input/test/harmonic.ly: new file.
+       * mf/GNUmakefile: make PFA for sauter CM fonts.
 
-       * lily/side-position-interface.cc (aligned_side): don't add
-       padding again.
+2002-09-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-2002-08-18  Werner Lemberg  <wl@gnu.org>
+       * mf/GNUmakefile: make map file for pfa target as well. 
 
-       * ly/engraver-init.ly:
-       s/extraverticalExtent/extraVerticalExtent/.
-       
-2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/parser.yy (assignment, Simple_music): Warning message fix.
-       Junk ARRAY_SIZE definition.
+       * scm/tex.scm (end-output): add newline to output
 
-       * lily/score-engraver.cc: Uniformise error message.
+       * lily/include/sequential-iterator.hh (class Sequential_iterator):
+       don't use Protected_scm for music-iterator members. 
 
-       * lily/grob-property.cc (internal_set_grob_property,
-       internal_get_grob_property): [!NDEBUG] Remove, use abort instead
-       of assert; we always want this functionality.  Uniformise warning
-       message.
+       * lily/music-iterator.cc (Music_iterator): initialize music_
        
-       * lily/main.cc (main, main_prog): Bugfix: move exit-upon-files
-       back, until after evaluating init_scheme_code.
-
-       * scm/translator-property-description.scm (breakAlignOrder): Doco fix.
-
-       * Documentation/user/lilypond-book.itely: Remove @cindex
-       without argument.
-
-       * Documentation/user/internals.itely: Remove stray comma after
-       @cindex entry.
-
-2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.74 released  
-
-       * lily/break-substitution.cc (fast_fubstitute_grob_list): use
-       realloc()
-
-       * lily/dynamic-engraver.cc (process_music): don't use SCM_UNDEFINED
-
-       * Documentation/user/tutorial.itely: fixes by Graham Percival.
-
-2002-08-17  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/lily-guile.cc (type_check_assignment): if
-       internal-type-checking set, abort if we find an unknown property.
+2002-09-09  Juergen Reuter  <reuter@ipd.uka.de>
 
-       * input/regression/GNUmakefile,input/test/GNUmakefile: be anal
-       with typechecks
+       * input/test/accid.ly: updated test file to show all available
+       accidentals styles
 
-       * lily/beam.cc: add 'knee to interface
+       * lily/accidental.cc, lily/key-signature-interface.cc,
+       lily/include/accidental-interface.hh: added method
+        get_fontcharname() to provide proper fall-back cases for missing
+        accidentals; print warning if font char lookup fails
 
-       * input/test/*.ly: remove or update files using deprecated
-       properties
+        * lily/time-signature.cc: fixed documentation bug
 
-       * lily/system.cc (spanner_count): new function
+2002-09-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/break-substitution.cc (fast_fubstitute_grob_list): special
-       function for break substitutions on groblists in spanners. By
-       reordering the elements of the list, we can skip large parts of
-       the list in the break substitution. This brings the complexity of
-       Lily back to more-or-less linear in the length of the score.
+       * lily/music-iterator.cc (quit, do_quit): new function: break link
+       to translator group explicitly. This used to be done from the
+       destructor of music-iterator. Now that iterators are GC'd, this is
+       no longer possible.  Add new function do_quit() to all applicable
+       derived classes.
 
-       Measured speed increase: 20 % (coriolan, without -O2)
+       * lily/lyric-combine-music-iterator.cc (construct_children): don't
+       unprotect objects.
+       (Lyric_combine_music_iterator): small typo bugfix.
 
-       * lily/parse-scm.cc (parse_handler): don't construct a new strport
-       for every parsing. This saves a lot of garbage on large files that
-       have many # constructs.
+       * lily/musical-request.cc: do ADD_MUSIC for String_number_req.
 
-       * lily/source-file.cc (init_port): add an SCM port to the
-       sourcefile as well. 
+       * lily/include/lily-guile.hh (scm_remember_upto_here_1): add glue
 
-       * lily/include/input-file-results.hh: move from
-       file-results. Rename Input_file_settings to Input_file_results.
-
-       * flower/ : remove simple-file-storage, mapped-file-storage,
-       string-storage. Move source-file, binary-source-file to lily/
-
-       * Documentation/header.html.in: remove FAQ
-
-       * Documentation/index.texi (Top): reorganise
-
-       * Documentation/topdocs/INSTALL.texi (Top): add note about fonts.
-
-       * Documentation/topdocs/FAQ.texi: remove.
-
-       * stepmake/stepmake/documentation-targets.make (footify): must
-       depend on all .html files, otherwise rebuilds are broken due to
-       the time stamps 
-
-       * ly/declarations-init.ly (noBreak): set penalty to 10001 (>
-       10000).
-
-2002-08-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * ly/engraver-init.ly (ChordNamesContext): minimumverticalExtent
-       -> minimumVerticalExtent
-
-2002-08-16  Stephen Peters <portnoy@portnoy.org>
-
-       * scm/pdf.scm, pdftex.scm: pdftex updates
-
-       * scripts/ly2dvi.py: pdflatex support
+       * lily/sequential-iterator.cc (get_pending_events): don't delete
+       music-iterator.
        
-2002-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/windows/installing.texi: Include info from Wiki. 
-
-2002-08-16  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/lilypond-book.py (output_dict): Replace
-       \includegraphics{xxx.eps} -> \includegraphics{xxx} to 
-       simplify for pdflatex users (makes no difference to latex users).
-
-2002-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-09-08  Rune Zedeler  <rune@zedeler.dk>
 
-       * Documentation/index.texi: 
-       * Documentation/windows/compiling.texi: 
-       * Documentation/windows/installing.texi: Update to reflect
-       LilyPond's inclusion into Cygwin.
+       * scm/music-property-description.scm: describe string-number (whoops)
 
-2002-08-15  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/test/phrasing-slur-height.ly: New file.
-
-       * scm/grob-property-description.scm (height-limit, ratio): Add.
-
-       * lily/slur.cc: 
-       * scm/grob-description.scm (Slur, PhrasingSlur): Move height-limit
-       and ratio out of details.
-
-       * lily/scores.cc (Input_file_settings): Initalize global_header_.
-
-       * lily/include/file-results.hh (class Input_file_settings): Add
-       private constructor.
-
-       * cygwin/GNUmakefile: [CYGWIN] Install bug-lilypond-cygwin.  Typo
-       fix.  Add kpsewhich commands (Thanks Mats).
-
-       * cygwin/bug-lilypond-cygwin.sh: New file.
-
-       * stepmake/stepmake/help2man-rules.make: Better way of showing
-       help2man command.
-
-       * Documentation/topdocs/FAQ.texi: Add more possible stale font
-       paths.
-
-       * stepmake/bin/package-diff.py: Prepend ./ to cut-and-pastable
-       commands.
-
-       * Documentation/topdocs/INSTALL.texi: Mention the need to and how
-       to create configure for CVS source trees.  Mention libkpathsea-dev
-       as alternative possible name for tetex-devel (or should that be
-       the other way around?).
-
-2002-08-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/include/file-results.hh (class Input_file_settings):
-       encapsulate file settings in a class, Input_file_settings.
-
-       * lily/scores.cc: new function ly_set_point_and_click_x
-       
-       * Documentation/topdocs/README.texi (Top): add note about xdelta
-
-       * Documentation/topdocs/INSTALL.texi (Top): move kpathsea to problems
-       section.
+       * Documentation/user/refman.itely: Tablature and bar number updates
        
-2002-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scripts/ly2dvi.py: Remove debug printing.
-
-2002-08-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * scripts/convert-ly.py (FatalConversionError.conv): bug in
-       verticalExtent replacement.
-
-       * VERSION: 1.73 released.
-
-2002-08-14 <jiba@tuxfamily.org>
-
-       * scm/output-lib.scm: Support of hammers and pulls in tablature
-       -- Hammers and pulls are inserted exactly like slurs, and a "H" or
-       a "P" is added over the slur as needed.  
-
-       * ./input/test/tablature-hammer.ly: example of hammer, pull and
-       legato in a tablature.
+2002-09-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * ly/engraver-init.ly: Stem.up-to-staff is now disabled by
-       default, since it appears that most of the published tablatures
-       are not like that.
+       * lily/lyric-combine-music-iterator.cc
+       (Lyric_combine_music_iterator): small bugfix
 
-2002-08-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/beam.cc (brew_molecule): use
-       Staff_symbol_referencer::staff_space for thickness.
-
-2002-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/lilypond.tely: Add dir entries for
-       executables.
-
-       * Documentation/user/converters.itely: 
-       * Documentation/user/invoking.itexi: Fix `invocation' node names,
-       in line with standard dir entries.
-
-       * Documentation/user/convert-ly.itexi
-       * Documentation/user/ly2dvi.itexi: Remove.
+       * lily/include/simultaneous-music-iterator.hh (class
+       Simultaneous_music_iterator): use SCM list for list of iterators.
        
-       * scripts/ly2dvi.py: Add pseudo-filter (and stdout output)
-       support.
-
-       * lily/main.c: 
-       * lily/paper-score.cc : 
-       * lily/gourlay-breaking.cc: Write info to stderr.
-
-       * buildscripts/help2man.pl: Update to latest version from Debian.
-       Fixes generation of man pages with perl 5.6.1.
-
-       * GNUmakefile.in: Add python link to build-datadir.  Fixes
-       generation of midi2ly man page.
+       * lily/cxx-function-smob.cc: remove file.
 
-2002-08-14  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+       * lily/include/cxx-function-smob.hh: remove file.
 
-       * Documentation/user/{tutorial.itely, introduction.itely}: 
-       Small fixes.
+       * lily/include/music-iterator.hh (class Music_iterator): smobify
+       music-iterator; many changes throughout. They are now constructed
+       through procedures that return to the smobbed iterator.
 
-2002-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * lily/include/*.hh: all derived_mark() functions are now const.
 
-       * lily/beam.cc (least_squares): Add comment.
-
-       * input/regression/beam-center-slope.ly: Update.
-
-       * lily/beam-quanting.cc (score_stem_lengths): Revert oops.
-
-       * input/template/melody-chords.ly: New file.
-
-       * lily/stem.cc (calc_stem_info): Move, document, clean up and fix
-       up-to-stem feature.
-
-       * ly/grace-init.ly (startGraceMusic):
-       * scm/grob-description.scm (beamed-lengths): Subtract half a beam
-       thickness, to fix most ugly beams.  See input/test/stem.ly and
-       baerenreiter-sarabande.ly.
-
-       * input/test/stem.ly:
-       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Play with
-       beamed-lengths.
-
-       * input/test/spacing.ly: Give enough room to test spacing.
-
-       * cygwin/post-lilypond.sh: Fix and update.
-
-       * cygwin/zlily-profile.sh: Remove.
-
-2002-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * GNUmakefile.in (EXTRA_DIST_FILES): Add server.el.patch.
-
-       * scm/grob-property-description.scm
-       (beamed-extreme-minimum-free-lengths): New property, now correctly
-       named.
-
-       * ly/grace-init.ly: New beam property updates.
-
-       * input/les-nereides.ly: Updates.
-
-       * cygwin/README.in: New file.
-
-       * input/sondag-morgen/GNUmakefile: 
-       * input/mutopia/R.Schumann/GNUmakefile: New file.
-
-       * scm/grob-property-description.scm (beamed-minimum-free-lengths):
-       (beamed-extreme-free-lengths): New property.
-
-       * lily/beam.cc (forced_stem_count): Count boundary cases too.
-       (set_stem_shorten): Integer divide bug fix.
-
-       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Really expect
-       six systems, change warning into error.
-
-       * scm/grob-description.scm (beamed-stem-shorten): Shorten 8th
-       beams same as normal stem (one staffspace), high order beams less
-       (arbitrary guess).
-       (beamed-lengths): Standard length for all beams.
-       (beamed-minimum-free-lengths):
-       (beamed-extreme-minimum-free-lengths): New property.
-
-       * input/regression/beam-default-lengths.ly: 
-       * input/regression/beam-shortened-lengths.ly: New file.
-
-       * lily/stem.cc (get_stem_info): New function.
-       (calc_stem_info): Partial rewrite.
-
-       * scm/grob-description.scm (Beam): same beamed-stem-shorten for
-       all beam counts.
+       * lily/syllable-group.cc (set_lyric_align): remove conditional
+       again.
 
-2002-08-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * Documentation/bibliography/computer-notation.bib (note): add
+       Beyond MIDI and The Virtual Score.
 
-       * VERSION: 1.5.72 released
+2002-09-07  Rune Zedeler  <rune@zedeler.dk>
 
-       * input/sondag-morgen/GNUmakefile (examples): add file
+       * input/sondag-morgen/*.ly: Tablature fixes
 
-       * input/mutopia/R.Schumann/GNUmakefile (examples): add file
+       * ly/performer-init.ly: BUGFIX: add alias Timing to Score context
        
-       * lily/lily-guile.cc (to_dir): return CENTER if not a direction.
-
-       * lily/include/grob.hh: remove remove_grob_property()
-
-       * lily/stem-engraver.cc (stop_translation_timestep): remove
-       dir-forced grob property
-
-       * Documentation/user/refman.itely (Grace notes): explain grace
-       after main note.
-
-       * input/test/ : small convert-ly mishaps.
-
-       * Documentation/user/preface.itely: small bits 
-
-       * Documentation/user/introduction.itely: add sectioning
-
-2002-08-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/stem.cc (get_default_stem_end_position): use beam_count - 1
-       as index; this fixes too short forced stem directions.
-       (calc_stem_info): various minute bugfixes.  
-
-       * lily/gourlay-breaking.cc (combine_demerits): set uniform
-       tightness constraint back to one. This fixes Baerenreiter
-       sarabande layout.
-
-       * input: some fixes. Add \version to all files.
+       * lily/parser.yy and lily/lexer.ll: Use E_UNSIGNED instead of E_DIGIT
        
-       * lily/stem.cc (calc_stem_info): Use get_direction_beam_count.
-
-       * lily/beam.cc (get_direction_beam_count): New function.
-
-       * GNUmakefile.in: Fix config.h dependency.
-
-       * input/test/beam-dir-function.ly: Fix for new default
-       neutral-direction = -1 (down).
-
-       * input/regression/tuplet-properties.ly:
-       * input/regression/tuplet-nest.ly: Fix.
-
-       * lilypond-font-lock.el (LilyPond-font-lock-keywords):
-       * input/test/improv.ly:
-       * input/test/cautionaries.ly: Accidentals -> Accidental.
-
-       * input/test/add-text-script.ly: Bugfix.  How did this ever work?
-
-       * Documentation/windows/installing.texi: 
-       * Documentation/windows/compiling.texi:
-       * cygwin/README: Update to reflect new binary release setup and
-       build instructions.
-
-2002-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * server.el.patch: Update.
-
-2002-08-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * stepmake/stepmake/metafont-rules.make: pktrace -> mftrace name
-       change.
-       * configure.in: idem
-
-2002-08-10  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * mf/parmesan-timesig.mf, scm/output-lib.scm,
-       lily/include/time-signature.hh, lily/time-signature.cc,
-       input/test/time.ly: fixed broken time-signature by setting grob
-       property font-family automatically.
-
-2002-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * lily/musical-request.cc (String_number_req): Added
 
-       * Documentation/user/tutorial.itely (Running LilyPond): Mention
-       xdvi and XFree86 option for Windows users.
-
-       * Documentation/user/invoking.itexi: Add ly2dvi's -p alias.
-
-       * scripts/ly2dvi.py: Bugfix for `ly2dvi -I ./foo foo.ly'.  Also
-       append directory of first file to search path, allowing
-       `ly2dvi foo/foo.ly' when foo.ly includes other files from
-       directory foo.  Add short option alias '-p' for --pdf.
-
-       * input/test/trills.ly: 
-       * input/test/preset-extent.ly: 
-       * scm/grob-property-description.scm: more extent renaming.
-
-2002-08-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/parse-scm.cc (protected_ly_parse_scm): compatibility with
-       CVS GUILE 
-
-       * input/test/preset-extent.ly (texidoc): added file.
-
-       * scripts/convert-ly.py: add extent rule.
-
-       * lily/grob.cc: change extent-[XY] to [XY]-extent globally.
-
-2002-08-09  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/main.cc (main): Remove stale #ifdef for windows.
-
-       * stepmake/stepmake/python-module-rules.make: 
-       * stepmake/stepmake/python-module-vars.make: 
-       * stepmake/stepmake/shared-library-vars.make: Add Cygwin support.
-
-       * stepmake/stepmake/generic-vars.make:
-       * cygwin/GNUmakefile: Fix Cygwin build detection.
+       * lily/tab-note-heads-engraver.cc: Use String_number_req instead
+       of Text_script_req; read properties stringOneTopmost and
+       highStringOne.
        
-       * stepmake/stepmake/shared-library-rules.make: Remove version juggling.
-
-       * stepmake/stepmake/shared-library-targets.make: Default target
-       includes version, add target libFOO.
-
-       * lily/main.cc: Temporary fix for access to scm_read_opts array
-       from shared Cygwin library.
-
-2002-08-08  Rune Zedeler <rune@zedeler.dk>
+       * ly/engraver-init.ly (tabStaffContext): Bugfix: remove Key_engraver;
+       set stringOneTopmost and highStringOne to #t
        
-       * ly/property-init.ly: Added phrasingSlurUp, phrasingSlurDown and
-       phrasingSlurBoth.
-
-       * input/mutopia/R.Schumann/romanze-op28-2.ly: Added.
+       * scm/output-lib.scm (tablature-stem-attachment-function): Changed
+       (guitar-tunings): List added
+       ((every-nth-bar-number-visible n) barnum): Instead of
+       default-bar-number-visibility
+       ((every-nth-bar-number-visible n) barnum): added
 
-       * input/sondag-morgen/*: renamed files from input/SondagMorgen/*
+       * scm/grob-description.scm (TabNoteHead): Extra-offset added (UGH!)
        
-2002-08-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * scm/translator-property-description.scm: Added new functions
 
-       * lily/beam.cc (struct Int_set): typo.
+       * input/test/tablature.ly: Changed to better demonstrate possibilities.
 
-       * mf/feta-beugel.mf (code): braces should start at 0, not 1.
-
-       * lily/include/lily-guile.hh (scm_int2num): guile 1.4 compatibility. 
-
-       * scm/grob-description.scm (all-grob-descriptions): set
-       X-offset-callbacks for TextScript
-
-       * lily/stem.cc (invisible_b): don't use support_head(), since it
-       sets stem direction.
-
-       * lily/beam.cc (struct Int_set): don't get stuck inserting
-       interval segments of length 0.0.
-
-       * scripts/convert-ly.py:  break-align conversion.
-
-2002-08-06  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/*.cc (process_music): gh_int2scm -> scm_int2num
-
-2002-08-06  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el: Also "C-xC-s" sets default command to LilyPond.
-
-2002-08-05  Rune Zedeler <rune@zedeler.dk>
-
-       * mf/feta-eindelijk.mf: Fix silly typo in 16th and shorter rests.
-
-2002-08-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * stepmake/bin/make-version.py: robustify.
-
-       * input/test/rhythm-excercise.ly: new file
-
-       * input/test/blank-notes.ly: new file
-
-       * lily/note-head.cc (head_extent): robustness fix.
+       * input/test/bar-number-every-fifth: Use new function
        
-       * Documentation/user/preface.itely: add some more.
+2002-09-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-2002-08-04  Rune Zedeler <rune@zedeler.dk>
+       * scripts/lilypond-book.py: revert pre use for python
+       2.2. Document why.
 
-       * Documentation/user/refman.itely
-       * Documentation/user/internals.itely: Documented "Current" property.
-       
-2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
+2002-09-07 Jeremie Lumbroso  <jeremie@lumbroso.fr>
 
-       * lily/lily-guile.cc: change gh_str02scm to scm_makfrom0str.
+        * Documentation/user/refman.itely: very minor corrections and
+       rephrasing of the reference manual -- revision up to line #400.
 
-2002-08-04  Werner Lemberg  <wl@gnu.org>
+       * Documentation/user/refman.itely: replaced all occurrence "staffs"
+       with "staves".
 
-       * tex/lilyponddefs.tex: s/filllastpage/lastpagefill/.
-       
-       * Documentation/user/refman.itely: Document it.
+2002-09-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
+       * lily/lexer.ll: scan E_DIGIT
 
-       * lily/main.cc (sane_putenv): Oops.  Should supply a private copy
-       to putenv. (this was actually caught by valgrind, but I didn't
-       think the error was mine... )
+       * lily/parser.yy (string_request): use E_DIGIT for string requests
 
-2002-08-03  Han-Wen  <hanwen@cs.uu.nl>
+       * lily/beam.cc (get_thickness): new function
 
-       * tex/lilyponddefs.tex: add filllastpage support.
+       * ly/performer-init.ly (ScoreContext): add Timing alias
 
-       * GNUmakefile.in: barf if config.h is older than configure. 
+       * lily/translator-def.cc (Translator_def): copy alias list too.
 
-       * VERSION: released 1.5.71 
+       * lily/stem.cc (height): add half beam thickness for beamed stems.
+       This fixes tuplet bracket vertical offsets on beams.
        
-       * lily/beam.cc (consider_auto_knees): rewrite function; now only
-       consider horizontal knees. Fixes input/bugs/bizzarre-beam.ly
-
-       * lily/syllable-group.cc (set_lyric_align): fix centering on note
-       head for `normal' lyrics. This fixes input/bugs/lyrics-spacing.ly.
-
-2002-08-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/beam.cc (connect_beams): fix quarter note beams.
-
-       * input/regression/beam-quarter.ly: new file.
-
-2002-08-02  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * buildscripts/mf-to-table.py (postfixes): Reduce the line spacing
-       in the font list.
-
-2002-08-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/scm-option.cc: excorcise iostream.
-
-       * lily/main.cc: remove iostream usage.
-
-2002-08-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scripts/lilypond-book.py: make URL for printfilename option.
-
-       * lily/beam.cc (position_with_maximal_common_beams): fix kneed
-       beamlets. This fixes input/bugs/knee
-
-       * ly/engraver-init.ly (HaraKiriStaffContext): switch off auto knee
-       for hara kiri staffs.
-
-       * lily/slur-engraver.cc (try_music): remove nested slur
-       functionality. This fixes spurious warnings with the partcombiner.
+       * lily/text-spanner-engraver.cc (stop_translation_timestep): small
+       cleanups; only hang spanner on paper-columns if there are no
+       note-columns to hang on. Also hang finished spanner on the last
+       note.
 
-2002-08-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * lily/tuplet-bracket.cc (calc_position_and_height): only quantize
+       inside staff.
 
-       * lily/parse-scm.cc (protected_ly_parse_scm): guile 1.4 compatibility.
+2002-09-07  Rune Zedeler  <rune@zedeler.dk>
 
-2002-08-01 Rune Zedeler <rune@zedeler.dk>
+       * scm/output-lib.scm: (default-bar-number-visibility) added
 
-       * lily/tab-note-heads-engraver.cc: add algorithm for automatically
-       selecting frets when none given by user. Read property
-       "minimumFret".
-
-       * scm/translator-property-description.scm: Add "minimumFret"
-       
-       * mf/feta-eindelijk.mf: Changed layout of 16th and shorter rests
-       to match the 8th rest. slanted 8th rest a bit more.
-       WARNING: 8th rest and classical quarter rest exchanged.
+       * ly/engraver-init.ly (ScoreContext) set barNumberVisibility to
+       #default-bar-number-visibility
        
-2002-08-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scm/grob-description.scm (RehearsalMark): Add baseline-skip to
-       handle multiline marks correctly.
-
-2002-07-31  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Fix dvips flags
-
-2002-07-31 Rune Zedeler <rune@zedeler.dk>
-
-       * input/SondagMorgen/*.ly: Added. TODO: Lots of cleanups but now
-       it's there.
-
-2002-07-31  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+2002-09-06  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/parser.yy (chord_notes): typo. 
+       * input/test/poly-metric.ly: update to use Timing.
 
-       * scm/music-functions.scm (unfold-repeats): bugfix
+       * lily/bar-number-engraver.cc (process_music): only run
+       barNumberVisibility if currentBarNumber is a number.
 
-2002-07-31  Rune Zedeler <rune@zedeler.dk>
+       * lily/parser.yy (chord_inversion): use CHORD_SLASH for '/'
+       (command_element): use Timing as alias for Score.
 
-       * ly/engraver-init.ly: remove alias "Current" from all contexts.
+2002-09-06  Jeremie Lumbroso  <jeremie@lumbroso.fr>
 
-       * lily/translator-group (find_existing_translator): If
-       n=="Current", return this context.
-       
-       * lily/rest.cc:
-       * lily/time-signature.cc: spacing for even number of staff lines.
-       
-2002-07-31  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/bugs/: remove various files.
+       * Documentation/user/refman.itely: minor corrections (replacing
+       `grob' by `object'), addition of an example in the tablature
+       section.
 
-       * Documentation/user/refman.itely: doco updates.
+2002-09-06  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * scripts/ly2dvi.py (find_pfa_fonts): add and document --pdf
-       option.
+       * VERSION: 1.6.2 released  
 
-2002-07-30  Rune Zedeler <rune@zedeler.dk>
+       * input/test/empty-staffs.ly: new file.
 
-       * ly/engraver-init.ly: add alias "Current" to all contexts.
+       * Documentation/topdocs/INSTALL.texi: adds a bit of information
+       about compiling in OpenBSD. (Graham Percival)
 
-       * ly/property-init.ly: Use "Current" context in the accidental
-       macros. TODO: Do the same in some of the other macros?
+2002-09-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
        
-       * scm/output-lib.scm (tablature-stem-attachment-function): add
-       duration argument. Now the function can be called again :-)
-
-2002-07-30  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/parse-scm.cc (parse_handler): add better error message,
-       return a sensible number of nchars
-
-2002-07-29  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/parse-scm.cc (protected_ly_parse_scm): catch GUILE errors
-       when parsing, and emit useful warning message.
+       * scm/documentation-lib.scm (scm->string): don't crash if a
+       procedure doesn't have a name.
 
-       * lily/lily-guile.cc (ly_parse_scm): add line/col/file locations
-       to SCM port for parser.
+2002-09-05  Juergen Reuter  <reuter@ipd.uka.de>
 
-2002-07-28  Rune Zedeler <rune@zedeler.dk>
-       
-       * lily/note-spacing.cc (stem_dir_correction) Add property
-       knee_spacing_correction controlling the amount of optical spacing
-       added to knees.
-       
-2002-07-28  Glen Prideaux  <gprideau@odyssey.apana.org.au>
-       
-       * lily/syllable-group.cc (set_lyric_align): Only fiddle with
-       alignment if a note has more than a single lyric so single stanza
-       songs are aligned correctly.
+       * input/test/custos.ly: updated test file to show all available
+       custos styles
 
-2002-07-28  Han-Wen  <hanwen@cs.uu.nl>
+       * lily/custos.cc: small code clean-ups
 
-       * input/test/broken-spanner-adjustment.ly: new file.
+       * input/test/rests.ly: updated test file to show all available
+       rest styles
 
-2002-07-27  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+       * mf/feta-eindelijk.mf: bugfix: added missing maxima rest
 
-       * scripts/lilypond-book.py: Handle printfilename also together
-       with {small,}verbatim
+2002-09-05  Rune Zedeler  <rune@zedeler.dk>
 
-2002-07-27  Juergen Reuter  <reuter@ipd.uka.de>
+       * scm/output-lib.scm (make-molecule-boxer): Fixed and moved from
+       input/test/boxed-molecule.ly
 
-       * scm/output-lib.scm, lily/note-head.cc: fixed broken baroque
-       note-head style by setting grob property font-family
-       automatically.
+       * input/test/boxed-molecule.ly: Fixed to use default
+       make-molecule-boxer
 
-2002-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * VERSION: 1.5.70 released.
+       * input/test/bar-number-every-fifth.ly: Added
        
-       * Documentation/user/lilypond-book.itely (Insert music snippets
-       into your texts using lilypond-book): Briefly mention HTML
-       documents.  Started rewrite, but lost inspiration.
-
-       * lily/grob-scheme.cc (get_original, get_system, get_broken_into):
-       Move scheme funcs from grob.cc and spanner.cc.
-
-       * lily, flower: Ran buildscripts/ontgaar.py.  See also
-       http://lilypond.org/wiki/?CodingStandards.
+       * lily/bar-number-engraver.cc: Add property barNumberVisibility
+       and use it to decide which BarNumbers to suicide.
        
-       * Documentation/GNUmakefile: Remove regression-test stuff.
-       (deep-WWW-clean): Remove wiki-dump.  Fixes web-clean target.
+2002-09-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * Documentation/regression-test.tely: Remove.
+       * input/test/poly-metric.ly: new file.
 
-       * Documentation/user/refman.itely (Text scripts): Comment out ref
-       to PostScript output.
+       * scripts/lilypond-book.py (output_verbatim): python 2.2 workaround.
 
-       * lily/beam.cc (knee_b): Fix to also work if some dirs are not
-       set.
+       * scm/documentation-lib.scm (scm->string): print procedure name in
+       stead of #<procedure .. > 
 
-       * lily/beam.cc (set_stem_directions): For knees, set stems to
-       their natural direction.
+       * scripts/ly2dvi.py (run_lilypond): exit with error if lily exited
+       any file with an error.
 
-2002-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * input/regression/molecule-hacking.ly: also restore Y
+       extent. Fixes bugs with stem attachment of parenthesized note
+       heads.
 
-       * lily/stem.cc (calc_stem_info): Don't force stems of kneed beams
-       to reach middle staff line.
+2002-09-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/beam.cc (consider_auto_knees): Recalculate beam position
-       after deciding for a knee.
+       * input/test/clef-end-of-line.ly: new file.
 
-2002-07-26  Han-Wen  <hanwen@cs.uu.nl>
+       * lily/stem-engraver.cc (acknowledge_grob): warn about too long
+       tremolos. Thanks to Erik Sandberg
 
-       * Documentation/user/internals.itely: move output-formats doco to
-       WikiWiki.
-       
-2002-07-25  Han-Wen  <hanwen@cs.uu.nl>
-       
-       * po/fr.po: update from TP
+       * input/trip.ly (fugaIIPedal): small cleanups.
 
-       * input/template/GNUmakefile (TITLE): add lysdoc target for the
-       templates
+       * lily/grob-pq-engraver.cc: more helpful message.
+       (stop_translation_timestep): use scm_merge_x for merging the lists.
 
-       * Documentation/user/introduction.itely (Introduction): finish
-       introduction 
+       * Documentation/user/appendices.itely: switch off parmesan listing
 
-2002-07-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+2002-09-01  Juergen Reuter  <reuter@ipd.uka.de>
 
-       * lily/include/music-iterator.hh (class Music_iterator): change
-       get_music() to get_pending_events().
+       * input/test/ancient-font.ly, input/test/ancient-time.ly,
+         input/test/mensural-ligatures.ly, lily/ligature-head.cc,
+         lily/mensural-ligature-engraver.cc, lily/note-head.cc,
+         lily/time-signature.cc, scm/output-lib.scm: removed obsolete
+         code that sets grob property font-family; also small updates to
+         various input/test files.
 
-2002-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-09-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * buildscripts/ontgaar.py: get_music () -> get_pending_events ().
+       * input/test/tab-staff.ly: removed.
        
-       * buildscripts/ontgaar.py: New file.
-
-       * scm/grob-property-description.scm (conditional-elements): Add
-       extent-X.
-
-       * lily/grob.cc: Add extent-X and extent-Y to interface.
-
-       * lily/grob-scheme.cc (ly_get_parent): Don't dereference null
-       parent. (Han-Wen)
-
-       * input/test/move-accidentals.ly: New file. (Han-Wen)
-
-2002-07-25  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/grob-scheme.cc (ly_get_parent): don't crash if no parent.
-
-       * lily/slur.cc (get_first_notecolumn_y): robustness: don't crash
-       if no note-columns.
-
-       * server.el.patch: new file.
-
-       * Documentation/user/refman.itely (Point and click):  updates.
-       (Graphical interfaces): add node
-       (Vertical spacing): add node
+       * lily/paper-def.cc (find_font): load virtual font for a list of
+       font names.
 
-2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * scm/font.scm (paper20-style-sheet-alist): equate ancient and
+       music font-families.
 
-       * lily, lily/include: Rename line to system.  Junk _l suffix.
+       * lily/virtual-font-metric.cc (get_char_molecule): new function
 
-2002-07-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * lily/system-start-delimiter.cc (staff_brace): use virtual fonts
+       for the list of braces
 
-       * po/fr.po: update from TP.
+       * lily/font-metric.cc (get_char_molecule): new function.
 
-       * buildscripts/lilypond-profile.sh: update support for
-       LILYPONDPREFIX
+2002-08-31  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * lily/virtual-font-metric.cc: new file
 
-       * Documentation/user/refman.itely (Point and click): Add info
-       about GVim, NEdit.
+       * lily/include/virtual-font-metric.hh (class Virtual_font_metric):
+       new file
 
-2002-07-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+       * scripts/lilypond-book.py: use old re's for python 2.2 as well
 
-       * lily/accidental-placement.cc (extent_callback): remove function
-       (position_accidentals): do nothing if not live.
-       Use accidental-grobs property i.s.o. accidentals, to maintain
-       proper typing. 
+       * debian/control: Debian patches by Anthony Fok
 
-2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * input/regression/lyric-combine-polyphonic.ly: new file.
 
-       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: *
-       input/test/count-systems.ly: Update to new system-count function
-       names.
+       * ly/engraver-init.ly (VoiceContext): add Grob_pq_engraver to
+       Voice context.
 
-       * lily/grob.cc (get_line, get_original): Use LY_DEFINE.
+2002-08-31 Graham Percival  <gperciva@sfu.ca>
 
-       * lily/spanner.cc (get_broken_into): Use LY_DEFINE.
+        * Documentation/user/tutorial.itely:  editorial changes
+       (spelling, grammar, etc) of the orchestral score, integrating text +
+       music, and the end of tutorial.
 
-       * lily/include/spanner.hh:
-       * lily/include/grob.hh: Remove DECLARE_SCHEME_CALLBACKs.
+2002-08-31 Rune Zedeler  <rune@zedeler.dk>
 
-       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Add
-       forcedBreak options and fix measure count comments.
+       * input/test/sondag-morgen/*.ly: 1.6 compatibility knee fixes
 
-       * GNUmakefile.in: Junk intl.
-
-       * config.make.in (prefix): Prepend $(DESTDIR) to allow install
-       without overriding prefix.
-
-       * aclocal.m4: Regenerate.
-       
-       * stepmake/aclocal.m4: Don't expand $prefix: fixes install with
-       other $prefix.
-
-       * cygwin/GNUmakefile: 
-       * ly/GNUmakefile: 
-       * python/GNUmakefile: 
-       * make/GNUmakefile: 
-       * mf/GNUmakefile: 
-       * scm/GNUmakefile:
-       * tex/GNUmakefile: use local_package_datadir iso datadir.
-
-       * make/substitute.make (ATVARIABLES): Add local_lilypond_datadir.
-
-       * aclocal.m4: Regenerate.
-       
-       * config.hh.in:
-       * config.make.in:
-       * stepmake/aclocal.m4: Cleanups and more conventional naming for
-       datadir ($prefix/share), package_datadir ($prefix/$package), and
-       local_package_datadir ($prefix/$package/$version).
-       
-       * make/lilypond-vars.make:
-       * scripts/ly2dvi.py:
-       * scripts/lilypond-book.py:
-       * scripts/mup2ly.py:
-       * scripts/midi2ly.py: use local_package_datadir iso datadir.
+       * lily/tab-note-heads-engraver.cc: Bugfix for instruments not
+       having 6 strings.
        
-       * GNUmakefile.in: build_datadir without version.
-       
-       * lily/main.cc: Datadir cleanup.
-
-       * lily/text-item.cc (lookup_text): 
-       * lily/music-output-def.cc (print_smob): 
-       * lily/mensural-ligature.cc (brew_molecule):
-       * lily/beam-quanting.cc (score_slopes_dy, score_forbidden_quants):
-       Fix warnings.
-       
-2002-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Warn when not
-       using 6 systems, like the original.
-
-       * input/test/count-systems.ly: New file.
-
-       * lily/spanner.cc (get_broken_into):
-       * lily/grob.cc (original_scm, line_scm): New function.
-
-       * lily/include/grob.hh (ly_scm2grob_array): Moved from
-       group-interface.hh and renamed.
-       (ly_grob_array2scm): New function.
-
-2002-07-23  Juergen Reuter  <reuter@ipd.uka.de>
+2002-08-31  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/ambitus-engraver.cc: bugfix: create ambitus grob during
-       process_music phase
-
-2002-07-23  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/separation-item.cc (width): cache extent in extent-X
-
-       * lily/spacing-spanner.cc (standard_breakable_column_spacing):
-       only add extent for non-musical column.
-
-       * lily/accidental-placement.cc (split_accidentals): new function
-       (get_relevant_accidental_extent): new function
-
-       * lily/staff-spacing.cc (next_note_correction): idem
-
-       * lily/separating-group-spanner.cc (find_rods): use
-       conditional_width().
+       * VERSION: 1.6.1 released
        
-       * scm/sketch.scm: fix roundfilledbox definition
+       * lily/kpath.cc: 
+       * lily/lily-guile.cc: macosx fixes.
 
-       * lily/lily-guile.cc (robust_list_ref): be sensible with negative
-       argument. This fixes too-long stems on half and quarter notes.
+       * lily/script-column.cc (before_line_breaking): use stable sorting
+       algorithm to preserve script ordering.
+       (grob_script_priority_less): new function
 
-2002-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/index.texi: Add, fix, change some links and names,
-       including dump of wiki wiki.
+       * lily/script-engraver.cc (process_music): 
+       * lily/text-engraver.cc (process_acknowledged_grobs):
+       * lily/fingering-engraver.cc (make_script): don't use direction
+       for script-priority. This fixes orderings for multiple down
+       script/fingering.
 
-       * Documentation/GNUmakefile (local-WWW): Slurp wiki.
+       * scripts/ly2dvi.py (run_lilypond): don't exit if LilyPond fails,
+       but try to assemble the files anyway.
 
-       * buildscripts/wiki-slurp.py: New file.  Accept multiple pattern.
-       (unwiki): Replace local urls with <img src> too.
+       * input/regression/prefatory-empty-spacing.ly: new file.
 
-       * Documentation/GNUmakefile (wiki-dump): New target.
+       * lily/break-align-interface.cc (do_alignment): translate last
+       break-align-group if it is invisible/empty.
 
-       * Documentation/header.html.in: Link to Documentation/index
-       renamed to Index (was other...).
+       * scm/grob-description.scm (all-grob-descriptions): LeftEdge is
+       not a BreakAlignGroup. Do not use
+       Break_align_interface::alignment_callback
 
-       * Documentation/regression-test.tely: Remove.
+2002-08-30  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * make/lysdoc-targets.make (local-WWW): Add default targets .ps.gz
-       and .pdf.
+       * scripts/lilypond-book.py (LatexPaper.find_latex_dims): give more
+       meaningful error if running latex fails 
 
-2002-07-22  Han-Wen  <hanwen@cs.uu.nl>
+       * Documentation/user/refman.itely (Tablatures): small
+       corrections. Thanks to Karl Berry
 
-       * VERSION: 1.5.69 released
-       
-       * lily/accidental-placement.cc (position_accidentals): document
-       two bugcases.
+2000-08-30  Heikki Junes <hjunes@cc.hut.fi>
 
-       * lily/skyline.cc (skyline_meshing_distance): bugfixes.
+        * make/lilypond.mandrake.spec.in: Mandrake adaptations from
+        redhat spec and rpm-skeleton found in Mandrake's home page.
 
-2002-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>
+2002-08-29 Graham Percival  <gperciva@sfu.ca>
 
-       * input/regression/abe.ly: 
-       * input/test/transposing.ly: Remove mention of mudela.
+       * Documentation/user/tutorial.itely:  editorial changes (spelling,
+       grammar, etc) of the "Fine tuning" section.
 
-       * scripts/lilypond-book.py (make_pixmap): Don't use quiet_system,
-       ie, don't redirect PNG output to /dev/null.  Fixes lys-to-tely
-       documents.
+2002-08-29  Juergen Reuter  <reuter@ipd.uka.de>
 
-       * input/test/mark.ly: 
-       * Documentation/user/refman.itely: Re-enable \mark #'() example.
+       * input/test/ancient-font.ly, mf/parmesan-heads.mf,
+       scm/output-lib.scm, lily/note-head.cc: bugfix: make neume note
+       heads accessible
+2002-08-29  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
 
-       * lily/parser.yy: Revert to MARK scalar.
+       * scm/music-functions.scm (unfold-repeats): Call new
+       shift-duration-log correctly also for unfolded repeats.
 
-2002-07-21  Han-Wen  <hanwen@cs.uu.nl>
+2002-08-27  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
 
-       * lily/accidental.cc (accurate_boxes): add function to represent
-       flat with 2 boxes. Improves flat-flat accidental spacing. 
+       * tex/titledefs.tex: Define \fetafont for use in titles.
 
-       * lily/accidental-placement.cc (stagger_apes): try to arrange accs
-       in a C form, with the top accidental closet to the chord.
+       * scm/music-functions.scm (shift-duration-log), lily/parser.yy
+       (Repeated_music): Handle dots correctly for \repeat tremolo.
 
-       * lily/stem.cc (get_default_stem_end_position): don't crash if
-       lengths not set.
-       (get_default_stem_end_position): idem for stem-shorten.
+2002-08-26  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * mf/feta-toevallig.mf: enlarge flat bbox.
+       * lily/score.cc: remove paranoia code.
 
-       * input/regression/lyrics-extender.ly: new file.
+       * lily/parser.yy: don't include malloc.h
 
-       * lily/lyric-extender.cc (brew_molecule): don't add
-       right-trim-amount if extender is broken.
+2002-08-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * scripts/ly2dvi.py (global_latex_preamble): bugfix (thanks Werner).
+       * flower/polynomial.cc (operator +): optimize += operator. No
+       copying.
 
-2002-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * lily/source-file.cc (get_line): use binary search to determine
+       line number. This kills another quadratic time-complexity term.
 
-       * Documentation/index.texi: Add pointers to new regression and
-       test documents.
+       * lily/include/source-file.hh (class Source_file): add newline_locations
 
-       * Documentation/user/converters.itely:
-       Documentation/user/invoking.itexi: Some small fixes for uniform
-       usage example.
+       * flower/include/array.icc (binary_search_bounds): new function.
 
-       * input/allfontsize.ly, size*.ly: New files, moved from
-       input/regression.
-       
-       * input/font20.ly, font-body.ly: New files, moved from input/test.
-       
-       * input/font*.ly: New files, moved from input/test.
+2002-08-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * input/test/*.ly: Remove empty files, fix broken ones.
+       * input/regression/tuplet-properties.ly (texidoc): bugfix
 
-       * input/test/different-time-signatures.ly: Add FIXME marker;
-       comment-out broken code.
+       * input/regression/beam-shortened-lengths.ly: add \stemUp
 
-       * Documentation/regression-test.tely: Comment-out, add
-       obsolete-marker and url to regression-test-dir.
+       * Documentation/user/refman.itely: 
 
-       * input/test/GNUmakefile: 
-       * input/regression/GNUmakefile: Add rule for lys-to-tely.py.
+2002-08-22  Tom Cato
 
-       * input/regression/+.ly:
-       * input/test/+.ly: New file.
+        * Documentation/user/refman.itely: spelling fix.
 
-       * input/test/cue-notes.ly: better example
+2002-08-21  Jan Nieuwenhuizen  <janneke@gnu.org>
 
-       * Documentation/user/refman.itely (Font selection): font size doco
+       * lily/main.cc (setup_paths): Prepend dirs to search path, instead
+       of appending.  Fixes build when typical LilyPond 1.4 leftovers clutter
+       the system.
 
-       * input/mutopia/F.Schubert/standchen.ly: note bugfix
+       * flower/include/file-path.hh (prepend): New function.
 
-       * lily/stem.cc: rewrite of scoring to give sane results on knee
-       beams.
+2002-08-20  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * lily/beam.cc (set_stem_lengths): extend stems for gapped tremolo
-       beams.
-       (connect_beams): chop off beaming outside the beam. Fixes problem
-       with tremolo beams.
+       * Documentation/misc/ChangeLog-1.5: move 1.5 ChangeLog to misc/
 
-       * lily/score-engraver.cc (initialize): error if feta20.afm
+       * lily/completion-note-heads-engraver.cc (class
+       Completion_heads_engraver): don't be confused by polyphonic rhythms.
 
-2002-07-19  Han-Wen  <hanwen@cs.uu.nl>
+       * input/regression/completion-heads-polyphony.ly: new file.
 
-       * scm/engraver-documentation-lib.scm
-       (document-property-operation): add properties to context
-       documentation.
+2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * scm/documentation-lib.scm (pad-string-to): align info menus.
+       * GNUmakefile.in (web-ext): distribute .ly with web tarball too.
+       This means that the 1.6 binaries must be rebuilt.
 
-2002-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * make/lilypond-vars.make: banish ps-to-X scripts
 
-       * debian/GNUmakefile: Remove lilypond.links.
-       
-       * debian/: Debian patch (Anthony Fok).
-       
-       * debian/lilypond.links: Remove, as per Anthony's request.
+       * make/generic-rules.make: remove blurb rule.
 
-       * aclocal.m4: Regenerate.
-       
-       * stepmake/aclocal.m4: Add --with-kpathsea-include,
-       --with-kpathsea-lib options.
-
-       * scripts/mup2ly.py: Cut-n-paste include missing lilylib.
-
-       * stepmake/stepmake/compile-vars.make: 
-       * stepmake/stepmake/executable-rules.make: 
-       * stepmake/stepmake/python-module-rules.make:
-       * stepmake/stepmake/shared-library-rules.make: Use ALL_LDFLAGS, to
-       guard agains user override of LDFLAGS.
-
-       * Documentation/user/refman.itely: Compile fix for \mark #'(music ...).
-
-       * Documentation/user/internals.itely: Use ly-set-mus-property!.
-
-       * cygwin/mknetrel: New file.
-
-       * cygwin: New directory.  Moved Cygwin stuff from
-       Documentation/windows.
-       
-       * Documentation/windows/fix-suffixes.sh:
-       * buildscripts/walk.sh: Junk.
-
-       * aclocal.m4: Regenerate.
-
-       * buildscripts/walk.sh: Remove.
-
-       * stepmake/stepmake/topdocs-targets.make: 
-       * stepmake/stepmake/help2man-rules.make: 
-       * stepmake/stepmake/generic-vars.make: 
-       * stepmake/make/stepmake.make: 
-       * Documentation/user/GNUmakefile: 
-       * make/stepmake.make: 
-       * make/lilypond-vars.make: 
-       * GNUmakefile.in: 
-       * stepmake/aclocal.m4: Remove builddir cruftyness.
-       
-       * stepmake/stepmake/c++-rules.make: Use ALL_CXXFLAGS, to guard
-       agains user override of CXXFLAGS.
-       
-       * stepmake/stepmake/c++-vars.make (ALL_CXXFLAGS): Include CXXFLAGS.
-       
-       * stepmake/stepmake/c-rules.make: Use ALL_CFLAGS, to guard
-       against user override of CFLAGS.
-       
-       * stepmake/stepmake/c-vars.make (ALL_CFLAGS): Include CFLAGS.
-
-2002-07-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * GNUmakefile.in: distribute lexer-gcc-3.1.sh  as well
-       
-       * lily/music.cc (LY_DEFINE): change ly-set-mus-property to
-       ly-set-mus-property!
-
-       * lily/grob.cc (LY_DEFINE): change ly-set-grob-property to ly-set-grob-property!
-
-       * lily/parser.yy (Repeated_music): shift duration log for tremolo
-       repeats, instead of klutzing around.
-
-       * lily/chord-tremolo-engraver.cc (acknowledge_grob): set X parent
-       of stem tremolo grobs.
-
-       * scm/music-functions.scm (shift-duration-log): new function, add
-       to duration log of all notes.
-
-       * lily/duration.cc: add compression factor arguments to
-       make-duration.
-       compression-factor, dot-count, duration-log: add scheme functions.
-
-       * lily/mark-engraver.cc (process_music): allow \mark to take a
-       number as argument as well.
-
-2002-07-16  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/rest.cc (after_line_breaking): only translate the whole
-       rest if we have more than 1 staff line
-
-2002-07-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: release 1.5.68
-
-       * scripts/lilypond-book.py: fixes by Tom Cato Amundsen.
-
-2002-07-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/beam-quanting.cc (score_forbidden_quants): split beam
-       quanting functionality.
-       (quanting): argh. Forgot how linear interpolation works. Bugfix.
-
-       * Documentation/index.texi (Top): add whole-big-page documentation.
-
-       * lily/side-position-interface.cc (general_side_position):
-       Subtract parent offset iso. adding it. (Huh? How could this have
-       worked?)
-
-       * lily/clef-engraver.cc (stop_translation_timestep): add staff to
-       OctavateEight support.
-
-       * scripts/lilypond-book.py: add smallverbatim option.
-
-       * lily/beam.cc (quanting): bugfix. Behave sanely when no visible
-       stems.
-
-       * lily/accidental-placement.cc (position_accidentals): add padding
-       property. Increase default setting to 0.2. 
-
-2002-07-15  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/paper-column.cc (before_line_breaking): urg. bugfix.
-
-       * lily/separating-line-group-engraver.cc (finalize): don't replace
-       right-items, but add to list. This fixes a bug when a staff ends
-       with cross-staff voice switching away.
-2002-07-14  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/mutopia/GNUmakefile: move mutopia/ to input/mutopia/
-
-       * lily/beam.cc (quanting): add explicit support for cross-staff
-       beaming: make slope penalty larger.
-
-       * lily/beam.cc: use common refpoints throughout. This fixes many
-       cross staff issues.
-       * lily/paper-column.cc (before_line_breaking): bug fix.
-
-       * lily/volta-engraver.cc (process_music): do something sensible if
-       no staffs found. 
-
-       * scripts/lilypond-book.py (make_pixmap): opps. Do png conversion
-       only once. 
-
-       * Documentation/user/refman.itely (Global layout): made section on
-       global layout, added spacing documentation.
-
-       * lily/staff-symbol.cc (brew_molecule): change ragged right for
-       staff symbols. See comments.
-
-2002-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/voice-devnull-engraver.cc (acknowledge_grob): Use proper
-       spelling for always.  In solo a due mode, kill spanners when the
-       other thread has solo.
-
-       * lily/thread-devnull-engraver.cc (acknowledge_grob): In solo a
-       due mode, kill everything when the other thread has solo.
-
-       * lily/a2-engraver.cc (acknowledge_grob): In solo a due mode, do
-       not set directions when we have solo.
-
-       * lily/part-combine-music-iterator.cc (process): Set property
-       "othersolo" if the other thread has solo.
-
-2002-07-13  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.67 released.
-       
-       * lily/beam.cc (calc_stem_y): fix beams on quarter notes.
-
-       * lily/stem-tremolo.cc (brew_molecule): add code for stem tremolos.
-
-       * lily/auto-beam-engraver.cc (create_beam_p): remember Beam
-       settings at the start of a potential auto beam.
-
-       * lily/include/sequential-iterator.hh (class Sequential_iterator):
-       bugfix: protect music list from GC.
-
-       * Documentation/user/introduction.itely: misc fixes.
-
-       * scripts/ly2dvi.py (run_latex): show latex error log. Ask for
-       bugreport if lilypond is killed by a signal. 
-
-       * input/regression/beam-funky.ly:  new file
-
-       * lily/input-smob.cc (make_input): GUILE 1.7 compatibility fixes.
-
-       * lily/beam.cc: complete rewrite of multiplicity. This fixes 16th
-       knees code.
-       (quanting): add french beaming support (property french-beaming)
-       (stem_beams): removed.
-
-i2002-07-12  Mats Bengtsson  <matsb@s3.kth.se>
-
-       * lily/beam.cc (after_line_breaking): Set correct stem lengths
-       also when beam positions are set manually.
-       (consider_auto_knees): Do not use automatic knees if the directions
-       are set manually by the user.
-
-2002-07-12  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/regression/grace-auto-beam.ly: new file
-
-       * input/regression/grace-unfold-repeat.ly: new file
-
-       * lily/auto-beam-engraver.cc (test_moment): never start on grace moments.
-
-       * lily/forbid-break-engraver.cc (start_translation_timestep): skip
-       grace notes for break-forbidding. Breaks during grace notes are
-       handled by Bar_engraver.        
-
-       * lily/unfolded-repeat-iterator.cc: Reimplement
-       Unfolded_repeat_iterator, Volta_repeat_iterator using
-       Sequential_iterator. All grace functionality from {} carries over
-       to repeats as well.
-
-       * lily/sequential-iterator.cc: new file: form baseclass for
-       sequential music iterator and unfolded/volta repeat iterator.
-
-2002-07-11  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/include/debug.hh: deprecate.
-
-       * lily/spacing-spanner.cc (set_springs): add support for
-       common-shortest-duration field.
-
-       * lily/parser.yy (translator_spec_body): allow \set in \translator
-       {}  block. This is the same as \override, here.
-
-       * lily/score-engraver.cc (one_time_step): don't warn about columns
-       when skipTypesetting == #t.
-
-       * lily/spacing-spanner.cc (musical_column_spacing): change
-       ragged right function to produce natural spacing.
-
-2002-07-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/paper-column.cc (before_line_breaking): update
-       #'bounded-by-me field for suicided items.  This fixes crazy
-       spacing in \partcombine scores.
-
-2002-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * config.hh.in: Add HAVE_SSTREAM.
-       
-       * configure.in: Add check for sstream header.
-
-2002-07-09  Mats Bengtsson  <matsb@s3.kth.se>
-       * flower/source-file.cc: Fix compatibility with older g++.
-2002-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/twinkle.ly: Bugfix: no automaticMelismata.
-
-2002-07-08  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mutopia/J.S.Bach/Cembalo-Partitas/: remove
-
-       * ly/engraver-init.ly (ScoreContext): turn on automaticMelismata
-       by default.
-
-       * lily/voice-devnull-engraver.cc (try_music):
-       lily/thread-devnull-engraver.cc: use proper spelling for #'always.
-
-       * lily/unfolded-repeat-iterator.cc (Unfolded_repeat_iterator):
-       copy here_mom_ too. This fixes an obscure bug with combining
-       partcombine and repeat
-
-       * lily/chord-tremolo-iterator.cc (Chord_tremolo_iterator): copy
-       factor too. 
-
-2002-07-07  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mutopia/J.S.Bach/pa.ly: remove
-       * mutopia/J.S.Bach/Duette/: remove  
-       
-       * scm/font.scm (change-rhs-size): add support for "paper19.ly"
-
-       * VERSION: 1.5.66 released
-
-       * scm/grob-description.scm (all-grob-descriptions): add
-       item-interface where necessary
-
-       * lily/score-engraver.cc (one_time_step): warn for grobs created
-       during stop_translation_timestep().
-
-       * lily/a2-engraver.cc: restrict acknowledged grob types.
-
-       * lily/chord-name-engraver.cc: remove acknowledge_grob().
-
-       * Documentation/user/tutorial.itely: doc carnage.
-
-2002-07-06  Rune Zedeler  <rune@zedeler.dk>
-
-       * Documentation/user/refman.itely: Documented accidentals
-       (incl. bugs), subdivideBeams and drum/percussion notation.
-
-       * lily/translator-group.cc, lily/include/translator-group.hh
-       (Translator_group::set_children_property): removed.
-
-       * lily/accidental-engraver.cc: don't use
-       Translator_group::set_children_property.
-
-       * lily/new-accidental-engraver.cc: Added. More correct
-       accidentals, but wrong spacing.
-
-       * lily/beam-enagraver.cc, lily/auto-beam-engraver.cc: Small
-       subdivideBeams-fixes.
-
-       * scm/drums.scm: Small changes/fixes in instruments and maps
-       
-2002-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lexer-gcc-3.1.sh: Fixes and more comments.
-
-       * Documentation/topdocs/INSTALL.texi: Add comment about gcc-3.0.4
-       problems.
-
-       * lily/include/stream.hh:
-       * lily/include/moment.hh:
-       * lily/include/midi-stream.hh:
-       * lily/streams.cc:
-       * lily/scm-option.cc:
-       * lily/parser.yy:
-       * lily/my-lily-lexer.cc:
-       * lily/moment.cc:
-       * lily/midi-stream.cc:
-       * lily/main.cc:
-       * lily/lexer.ll:
-       * lily/includable-lexer.cc:
-       * flower/include/source-file.hh:
-       * flower/include/parray.hh:
-       * flower/include/dictionary.hh:
-       * flower/include/array.icc:
-       * flower/string.cc: 
-       * flower/source-file.cc:
-       * flower/getopt-long.cc: gcc-3.1 fixes.
-
-       * stepmake/stepmake/generic-targets.make: Add comment about warning.
-
-       * lexer-gcc-3.0.patch: Add comment, and a fix for installations
-       that have an unpatched flex and gcc-3.1.x.
-
-       * Documentation/topdocs/INSTALL.texi: Add comments and
-       instructions on gcc-3.1.x.
-
-       * lexer-gcc-3.1.sh: New file.
-
-       * aclocal.m4: regenerate.
-       
-       * stepmake/aclocal.m4: Version compare fix.
-
-2002-07-05  Han-Wen  <hanwen@cs.uu.nl>
-
-       * ly/engraver-init.ly (RhythmicStaffContext): stems up by default.
-
-       * lily-guile.hh: remove guile 1.3 compatibility,  add 1.4
-       compatibility functions.
-
-2002-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/windows/lilypond.hint (requires): Add libintl2.
-
-2002-07-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.65 released. 
-       
-       * scripts/lilypond-book.py: patches by Tom Cato Amundsen.  Adds
-       support for the columnsep when using the geometry package.
-       
-2002-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scm/grob-property-description.scm (minimum-space-pair): Remove.
-
-       * Documentation/windows/README: 
-       * Documentation/windows/guile-1.5.6-1.5.6.jcn2.patch:
-       * Documentation/windows/changelog: New file.
-
-       * Documentation/windows/lilypond.hint (requires): libguile14 (was:
-       guile).
-
-2002-07-03  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/grob-property.cc (HASHING_FOR_MUTABLE_PROPS): experiment:
-       try hash tables for mutable properties.
-
-       * lily/align-interface.cc: remove aligned-interface and props
-       minimum-space-pair extra-space 
-
-       * lily/grob-property.cc: new file move grob prop handling here.
-
-       * lily/lily-guile.cc (ly_deep_copy): add vector support
-
-       * lily/break-substitution.cc (do_break_substitution): add vector
-       support.
-
-       * lily/spanner.cc: remove extend_spanner_over_* funcs.
-
-2002-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/aclocal.m4 (STEPMAKE_GET_VERSION): Workaround for
-       broken Debian gcc version string: 'gcc (GCC) 3.1.1 20020606
-       (Debian prerelease)'
-
-2002-07-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/bar-check-iterator.cc (process): change
-       barbarCheckNoSynchronize to barCheckSynchronize
-
-       * Documentation/user/bugs.itexi: move to introduction, remove.
-
-       * Documentation/user/*.itexi: general carnage/cleanage.
-       
-       * Documentation/user/internals.itely: split most of file into
-       internal documentation (.scm and .cc)
-
-       * buildscripts/make-font-dir.py: put designsize in to X font
-       sWidth field
-
-       * make/lilypond.redhat.spec.in: postinstall bugfix
-
-2002-07-02  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * lily/ambitus-engraver.cc, lily/ambitus.cc: Various bugfixes:
-       avoid segfault on undefined ambitus pitch; avoid wasteful creation
-       of pitch smobs; defer computation of centralCPosition beyond first
-       timestep to catch also clefs outside of the current voice context.
-
-2002-07-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/template/satb.ly: new file
-
-2002-07-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/glossary.tely: Precautions for lilypond-book:
-       don't use spaces after @lilypond options.
-
-       * Documentation/topdocs/INSTALL.texi (Top): Remove generic Guile
-       threads warning.
-
-2002-07-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION (MAJOR_VERSION): 1.5.64
-
-2002-06-30  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/grob.cc (mark_smob): don't mark parents, explain why.
-
-       * tex/lilyponddefs.tex: Define outputscale only once.
-
-2002-06-29  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * configure.in: Require guile 1.4 or newer (was 1.3.4?).
-
-2002-06-29  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/(phrasing-)slur-engraver.cc: remove slur{Begin|End}Attachment.
-
-       * lily/separating-line-group-engraver.cc (acknowledge_grob):
-       ignore grobs with no-spacing-rods set.
-
-       * Documentation/user/tutorial.itely (Fine tuning a piece): more tut.
-
-       * scm/grob-description.scm (all-grob-descriptions): sort list
-       
-2002-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/tutorial.itely (A piano excerpt): Bugfix:
-       remove stray brace.
-
-       * Documentation/topdocs/FAQ.texi (Installation): Add
-       lilypond-devel list.  Add faq about font removal.  Fix faq about
-       generating and running ./configure.
-
-2002-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scm/chord-name.scm (chord::name->text): Workaround: clean markup
-       text.
-
-       * lily/text-item.cc (markup_text2molecule): Bugfix: raise only once.
-
-       * input/test/ambitus.ly:
-       * lily/ambitus-engraver.cc:
-       * lily/ambitus.cc:
-       * lily/include/ambitus.hh: New file.
-
-       * GNUmakefile.in (local-clean): Also remove builddir-setup's symlinks.
-
-2002-06-25  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * input/test/ambitus.ly, lily/ambitus-engraver.cc,
-       lily/ambitus.cc, lily/include/ambitus.hh, ly/engraver-init.ly,
-       scm/basic-properties.scm, scm/grob-description.scm,
-       scm/grob-property-description.scm: Add support for ambitus.
-
-2002-06-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/text-spanner.cc: add some props to interface (patch
-       courtesy Chris J).
-
-2002-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/text-spanner.cc (setup_pedal_bracket): Bugfix: only
-       dereference valid Grob.
-
-       * configure.in: Quoting fixes.
-
-2002-06-24  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.63 released
-
-       * lily/grob-scheme.cc: new file
-
-       * lily/break-substitution.cc: split up break substitution
-       functionality, and make a special constant stack-space version for
-       lists of grobs. This should fix the problems of lily in
-       combination with pthreads/qthreads.
-
-       * lily/grob.cc (mark_smob): bugfix: mark other parent too.
-
-2002-06-23  Chris Jackson  <chris@fluffhouse.org.uk>
-
-       * lily/text-spanner.cc (setup_pedal_bracket):
-       * lily/piano-pedal-engraver.cc (create_bracket_grobs): 
-       Fix the lengths of mixed-style piano pedal brackets.
-
-2002-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/tutorial.itely (First steps): Add missing
-       quotation.
-
-       * Documentation/topdocs/INSTALL.texi (Top): Add some warnings
-       about guile --with-threads.  Hopefully this issue can be resolved
-       rsn, but maybe we should even add warnings for the standard Debian
-       and Red Hat packages?
-
-       * configure.in: Warn if guile is configured to use threads.  Maybe
-       we should make this an error (ie, add to REQUIRED list?)
-
-       * config.make.in (PACKAGE_NAME):
-       (PACKAGE, package):  Don't hardcode.
-
-       * VERSION (PACKAGE_NAME): Typo fix.
-
-2002-06-23  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/tutorial/brahms-*.ly: new tutorial files.
-
-       * Documentation/user/tutorial.itely: fixes. Extend cheat sheet.
-
-       * scm/script.scm (default-script-alist): fermata is up.
-
-       * lily/dynamic-engraver.cc (stop_translation_timestep): stop
-       dynamic line spanner when there is no crescendo to connect.
-
-       * lily/tie.cc (get_control_points): add test to avoid flat ties.
-
-2002-06-22  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/note-collision.cc (check_meshing_chords): don't crash if no
-       stems.
-
-       * scm/music-functions.scm (toplevel-music-functions): new
-       definition. Functions to apply automatically. Removes the need for
-       explicitly doing \apply #voicify-music
-
-       * lily/grob.cc (do_break_substitution): rename function, use
-       global var for criterion argument. Reduces stack usage a little.
-
-       * ly/engraver-init.ly (StaffContext): add Instrument_engraver
-
-       * scripts/convert-ly.py, lily/*.cc, scm/*.scm: change
-       visibility-lambda to break-visibility
-
-2002-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/bugs/part-combiner.ly: New file.
-
-       * lily/include/spacing-interface.hh: New file.
-
-       * lily/include/spaceable-element.hh: Remove.
-
-       * input/test/script-priority.ly: New file.
-
-2002-06-20  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/system.cc (output_lines): kill grobs that are only for spacing.
-
-2002-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/fingering-engraver.cc (make_script): 
-       * lily/script-engraver.cc (process_music): 
-       * lily/text-engraver.cc: 
-       (process_acknowledged_grobs): Remove hard coded script-priority.
-
-       * flower/warn.cc: Cleanup.
-
-       * lily/voice-devnull-engraver.cc: Also eat multi-measure rest, a
-       spanner now.
-
-       * aclocal.m4: Regenerate.
-
-       * stepmake/aclocal.m4: Also set GUILE_PATCH_LEVEL.
-
-       * config.hh.in: Only set GUILE_MAJOR_VERSION if necessary.
-       * lily/include/lily-guile.hh: Only include config.h if necessary.
-
-       * Changelog: cvs changes ml archive test #8.
-       
-       * lily/slur-engraver.cc: Layout fix.
-
-2002-06-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * ly/engraver-init.ly (RhythmicStaffContext): add
-       Dot_column_engraver, resurrect barlines 
-       
-       * VERSION: 1.5.62 released.
-
-       * lily/engraver-group-engraver.cc (do_announces): rename
-       create_grobs () to process_acknowledged_grobs().
-
-       * lily/grob.cc (programming_error): add programming_error with
-       origin location.  
-
-       * lily/tuplet-bracket.cc (parallel_beam): robustness check, don't
-       fail if a beam doesn't have stems.  
-
-       * lily/engraver-group-engraver.cc (do_announces): scary change in
-       calling convention of create_grobs():  no create_grobs() call
-       before acknowledge_grobs().
-
-       * lily/sequential-music-iterator.cc (skip): add support for grace
-       notes. 
-
-       * lily/music.cc (Music): fix very subtle and nasty memory
-       corruption bug. Typical symptom: "programming_error: Rhythmic_req
-       has no duration"
-
-       * mutopia/claop.py: new file: CLA(O)P II by Peter Wallin.
-
-2002-06-19  Han-Wen  <hanwen@cs.uu.nl>
-
-       * ly/engraver-init.ly (RhythmicStaffContext): add
-       Dot_column_engraver
-       
-
-       * lily/parser.yy: various protection fixes. Less objects are now
-       overprotected.
-
-2002-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/bin/release.py (prev_ver): Bugfix: assume new diff
-       naming scheme.
-
-       * Documentation/windows/zlily-profile.sh:
-       * Documentation/windows/post-lilypond.sh: Assume normal
-       prefix=/usr for lilypond.
-
-       * lily/musical-request.cc (length_mom): Display origin with error.
-
-       * input/test/duration-check.ly: New file.
-
-       * lily/lily-guile.cc (ly_pair_p): [PARANOID]: Check for freed
-       cells.
-
-       * lily/part-combine-music-iterator.cc (get_state): Bugfix: use
-       ly_symbol2scm to get a scm symbol (rather than ly_str02scm).
-
-       * aclocal.m4:
-       * autogen.sh: Regenerate.
-       
-       * Documentation/topdocs/INSTALL.texi: 
-       * configure.in: 
-       * stepmake/configure.in:
-       * stepmake/aclocal.m4: Revert autoconf upgrade.  Autoconf 2.53 has
-       a serious bug wrt AC_CONFIG_AUX_DIR (reported).  Creating
-       ./configure once again requires autoconf == 2.13.
-
-       * stepmake/autogen.sh: Check for autoconf == 2.13.
-
-2002-06-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/parser.yy (open_request_parens): add input locations to
-       open and close parens. 
-
-2002-06-17  Chris Jackson <chris@fluffhouse.org.uk>
-
-       * lily/tuplet-bracket.cc:
-       * lily/text-spanner.cc: 
-       * lily/piano-pedal-engraver.cc: 
-       * scm/grob-description.scm: 
-       * scm/grob-property-description.scm: Changed the
-       edge-width property of brackets to edge-widen. Changed the sign of
-       the left element of edge-widen so a pair of equal numbers produces
-       a symmetrical bracket.
-
-2002-06-17  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * ly/espanol.ly: added.
-
-       * lily/simple-spacer.cc (solve): remove assert.
-
-2002-06-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/forbid-break-engraver.cc (class
-       Forbid_line_break_engraver): new engraver: forbid linebreaks
-       during playing notes
-
-       * lily/spacing-spanner.cc (loose_column): add another check: don't
-       move around bar lines as loose columns.
-
-       * scm/basic-properties.scm (default-break-barline):  add pre-break
-       for .| barline
-
-2002-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * GNUmakefile.in (builddir-setup): Bugfix: include srcdir/tex as
-       well as mf/out as subdirs of tex, for kpathsea to find through TEXMF.
-
-       * scripts/lilypond-book.py (environment): Bugfix: update to new
-       TEXMF scheme, from ly2dvi.
-
-       * lily/lookup.cc (slur): Invoke bezier-bow.
-
-       * scm/tex.scm (bezier-bow): 
-       * scm/ps.scm (bezier-bow): Bezier sandwich with rounded endings
-       (Previously named bezier-sandwich).
-       
-       * scm/tex.scm (bezier-sandwich):
-       * scm/ps.scm (bezier-sandwich): Plain bezier sandwich.
-
-       * make/lilypond.mandrake.spec.in (post): 
-       * make/lilypond.suse.spec.in (post): 
-       * make/lilypond.redhat.spec.in (post): Also remove parmesan fonts.
-       
-       * tex/lilyponddefs.tex: Uncomment feta character support.
-
-       * Documentation/user/refman.itely (Pitches): Add espanol.ly
-       description.
-
-       * ly/catalan.ly: Add comment about (spanish) -s suffix.
-
-       * ly/espanol.ly: Spanish note names by Carlos Garc'ia Su'arez
-       <cgscqmp@terra.es>.
-
-2002-06-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * GNUmakefile.in (short-examples):
-       (long-examples): Bugfix for --srcdir build.
-       (top-web): Rewrite weblist find command.
-
-       * stepmake/bin/config.sub: 
-       * stepmake/bin/config.guess: Update from latest autotools.
-
-       * aclocal.m4:
-       * autogen.sh: Regenerate.
-       
-       * configure.in: 
-       * stepmake/configure.in: 
-       * stepmake/aclocal.m4: Run autoupdate.  Creating ./configure now
-       requires autoconf >= 2.50.
-
-       * stepmake/autogen.sh: Check for autoconf >= 2.50.
-
-       * Documentation/user/refman.itely: Bugfix for tablature example.
-
-       * Documentation/windows/compiling.texi: Update for new and
-       improved setup.
-
-2002-06-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/spacing-spanner.cc (find_shortest): make 1/8 configurable:
-       introduce base-shortest-duration
-
-       * lily/parser.yy (music_output_def_body): don't crash when \tempo
-       in unexpected \midi{} is found.
-
-2002-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/GNUmakefile.in: Don't install stepmake.  This breaks
-       the use of make/ly.make for use as an external makefile.  Probably
-       noone except for myself ever used this anyway.
-
-       * stepmake/stepmake/GNUmakefile (INSTALLATION_DIR): Bugfix: Adapt
-       to new $datadir convention (<package>/<version>).
-
-2002-06-13  Han-Wen  <hanwen@cs.uu.nl>
-       
-       * VERSION: 1.5.61 released
-       
-       * Document/user/refman.itely: tablature doc and code updates by
-       Jean-Baptiste Lamy <jiba@tuxfamily.org>
-       
-       * input/template/piano-dynamics.ly: bugfixes.
-
-       * lily/key-engraver.cc (try_music): read request only once. Don't
-       overwrite lastKeySignature. Call create_key() only once. This
-       fixes a bug with multiple equal key changes on polyphonic staffs.
-
-2002-06-12  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scm/grob-description.scm: Add side-position-interface to TextSpanner
-
-       * scm/grob-property-description.scm: Document the trill line type.
-
-2002-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/stepmake/generic-vars.make: 
-       * make/lilypond-vars.make:
-       * GNUmakefile.in (builddir-setup): New setup for builddir run.
-       Fixes LilyPond run from builddir for --srcdir builds.
-
-       * Documentation/windows/GNUmakefile (OUT_PROFILES): Bugfix for
-       --srcdir build.
-
-2002-06-12  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scm/grob-description.scm (all-grob-descriptions): add
-       font-family to RehearsalMark
-
-       * scm/drums.scm: move over definitions from drum-pitch-init.ly
-
-       * lily/volta-bracket.cc (brew_molecule): bugfix, don't do anything
-       if glyph not set.
-
-2002-06-12  Heikki Junes  <heikki.junes@hut.fi>
-
-       * lilypond-mode.el: Propose saving before applying a command:
-       for saved buffer set default command to LilyPond.
-
-2002-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * buildscripts/mutopia-index.py (headertext_nopics): Add missing
-       variable.
-
-       * Documentation/windows/lilypond.hint: Renamed (previously setup.hint).
-
-       * Documentation/windows/lilypond-doc.hint: New file.
-
-       * GNUmakefile.in: Forward port: Add toplevel target install-html-doc.
-       Bugfixes for --srcdir html-doc build.
-       
-       * make/lilypond-vars.make (LILYPOND_BOOK_INCLUDES): Forward port:
-       Bugfix: Include $(builddir)/mf/out (was $(srcdir)/mf/out.
-
-2002-06-10  Han-Wen  <hanwen@cs.uu.nl>
-
-       * ly/script-init.ly (pralldown): add some scripts.
-
-       * Documentation/user/refman.itely: many edits.
-
-2002-06-09  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/tuplet-bracket.cc (brew_molecule): don't translate in Y
-       direction, this breaks staffline avoidance of the bracket when
-       they're horizontal.
-
-2002-06-08  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/midi2ly.py: Fix handling of -o
-
-2002-06-08  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/molecule.cc (translate): set max distance to 100 cm.
-
-2002-06-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.60 released
-
-       * lily/beam.cc: tremolo fix.
-
-       * scripts/convert-ly.py:  add tuplet-X-visibility rules.
-       add VerticalExtent -> verticalExtent rules.
-
-       * lily/axis-group-engraver.cc: consistent case for
-       XxxxVerticalExtent properties.  
-
-       * Documentation/user/refman.itely (Tuplets): update
-       tuplet-X-visibility properties. 
-
-       * input/test/defaultbars.ly: Corrected (thanks Mats)
-       
-2002-06-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/beam.cc (shift_region_to_valid): fix stupido bug. 
-
-       * buildscripts/lilypond-profile.sh: override settings if
-       LILYPONDPREFIX is set.
-
-2002-06-04  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/ly2dvi.py (non_path_environment): Fix typo
-
-2002-06-03  Heikki Junes  <heikki.junes@hut.fi>
-
-       * lilypond-mode.el: Extend "Quick notes" containing note tuples.
-
-       * lilypond-font-lock.el: Add fixes and comments to syntax-table.
-
-2002-06-03  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/beam-engraver.cc (class Grace_beam_engraver): derive from
-       beam-engraver: use different engraver so we can mix normal and
-       grace beams.
-
-2002-06-01  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/beam.cc (shift_region_to_valid): Try to shift positions
-       after slope-damping and concaveness check, so that short-stems are
-       not violated.
-
-2002-05-31  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/aclocal.m4: Fix for ash as /bin/sh.
-
-2002-05-31  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.59 released 
-       
-       * scripts/musedata2ly.py (Parser.parse_note_line): add dots. Add
-       notice that missing features are exercise for user.
-
-2002-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/beam.cc (score_stem_lengths): Bugfix for knees: use correct
-       (but alas, not partly precomputed) value for current_y when
-       calculating stem length demerits.
-       (calc_stem_y): Temporary precomputed factors fix.
-
-       * lily/stem.cc (calc_stem_info): Take multiplicity into account
-       for shortest_y too.
-
-       * input/bugs/melisma-tie-rest.ly: New file.
-
-2002-05-30  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/stem.cc (calc_stem_info): remove min_y member, rename
-       stuff.  Remove kneeing stuff.
-
-       * lily/beam.cc (brew_molecule): remove beam direction. Lots of
-       twiddling
-
-2002-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scm/sketch.scm: 
-       * scm/ps.scm: 
-       * scm/pdftex.scm: 
-       * scm/pdf.scm: 
-       * scm/tex.scm: Add check for Guile-1.4.1.  Guile includes
-       patch-level of version in minor-version string.  Arg.
-
-2002-05-29  Han-Wen  <hanwen@cs.uu.nl>
-
-       * ly/engraver-init.ly (TabStaffContext): 
-       enable TabStaff by default.
-
-       *  Tablature support by Jean-Baptiste Lamy <jiba@tuxfamily.org>
-
-2002-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * config.hh.in: Remove duplicate DIR_DATADIR entry.
-
-       * aclocal.m4: Regenerate.
-       
-       * stepmake/aclocal.m4: Append $FULL_VERSION to datadir.
-
-2002-05-25  Heikki Junes  <heikki.junes@hut.fi>
-
-       * lilypond-mode.el: Added Deutsch notes and fixed "Quick notes".
-
-       * lilypond-mode.el: Write notes with fewer keystrokes trough a 
-       "Quick notes"-interface.
-
-2002-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/regression/non-empty-text.ly: Update example with outdated
-       comment.
-
-2002-05-25  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scripts/convert-ly.py:  add textNonEmpty rule
-
-       * lily/text-engraver.cc (create_grobs): remove textNonEmpty
-
-2002-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/text-item.cc (markup_text2molecule): Junk ugly lookahead by
-       using translate-robust add_molecule instead of add_at_edge.
-       Bugfix for #(lines (finger "" "1")).
-
-2002-05-24  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/stem-tremolo.cc (brew_molecule): clean up and fix stem
-       tremolo placement.
-
-2002-05-22  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.58
-       
-       * Documentation/user/refman.itely: Bugfix: add node Repeats and
-       MIDI.  Regenerate menu.  Fix @end example.
-
-       * lily/accidental.cc: Add cautionary-style to interface.
-
-       * mf/feta-beugel.mf (code): use autometric macros for braces.
-       This fixes input/bugs/braces.
-
-       * lily/afm.cc (count): return numOfChars, not size of array
-       (always equals 256.)
-
-       * lily/script.cc (before_line_breaking): postpone setting the
-       X-parent of vertical scripts. This fixes the case of scripts on
-       chords with seconds 
-
-2002-05-21  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scm/grob-description.scm:  fix alignment of barnumber: make sure
-       it doesn't hit the G-clef. 
-
-       * input/mozart-hrn3-defs.ly (startGraceMusic): typo (it's
-       startGraceMusic not startGraceContext).
-
-2002-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/autogen.sh: Check for autoconf2.13, and abort if not
-       found.
-
-2002-05-20  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/accidental-engraver.cc: remove old accidental engraver,
-       move new one to accidental-engraver.cc.
-
-       * lily/local-key-item.cc: remove file
-
-       * lily/include/local-key-item.hh: remove file
-
-       * scripts/ly2dvi.py (make_preview): add --preview-resolution
-       option.
-
-       * lily/accidental.cc (brew_molecule): support for cautionary
-       accidentals. 
-
-       * lily/note-head.cc (internal_brew_molecule): warn if note head
-       not found.
-
-       * lily/time-signature.cc (special_time_signature): remove warning
-       about time signature. 
-
-       * lily/spacing-spanner.cc (musical_column_spacing): Prevent
-       reverse springs by limiting fixed-note space.
-
-2002-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/aclocal.m4: Bugfix: complain if program not found.
-
-       * scripts/update-lily.py (next_version, prev_version, diff_name):
-       New function.  Patches now named name-prev-latest.diff.gz.
-       Bugfix: import shutil.
-
-2002-05-19  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/tutorial/sammartini.ly: fix and document autochange
-       weirdness.
-
-       * scm/pdftex.scm: resurrect PDFTeX output. Still doesn't work, but
-       does produce .pdftex files.
-
-       * lily/note-collision.cc (check_meshing_chords): move file from
-       collision.cc, implement merged note heads (there you go, Drarn :-)
-
-       * input/regression/collision-heads.ly: new file
-
-       * VERSION: 1.5.57 released.
-
-2002-05-18  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * mf/parmesan-heads.mf, scm/grob-description.scm,
-       scm/grob-property-description.scm, scm/interface-description,
-       lily/include/my-lily-parser.hh, lily/include/ligature-head.hh,
-       lily/include/mensural-ligature.hh, lily/include/lily-proto.hh,
-       lily/include/ligature-engraver.hh,
-       lily/include/ligature-bracket.hh, lily/parser.yy,
-       lily/ligature-bracket-engraver.cc, lily/mensural-ligature.cc,
-       lily/mensural-ligature-engraver.cc, lily/note-heads-engraver.cc,
-       lily/ligature-head.cc, lily/ligature-engraver.cc,
-       lily/ligature-bracket.cc, input/test/mensural-ligatures.ly:
-       implemented white mensural ligatures (still with a big list of
-       TODOs)
-
-
-2002-05-19  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/*.cc: use LY_DEFINE everywhere. Move doc strings from
-       Documentation/user/internals.itely.
-
-       * lily/function-documentation.cc: new file. Infrastructure for
-       self documenting Scheme functions.
-
-2002-05-18  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/stem.cc (calc_stem_info): bugfix for less ugly knees.
-
-2002-05-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scripts/lilypond-book.py (re_dict): fix regexps; don't combine ?
-       and * (as in "([^>]*)?")
-
-2002-05-17  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/topdocs/INSTALL.texi: Update GCC, Flex and GUILE info.
-       Add info about CVS.  Stable/development are currently 1.4/1.5,
-       both at lilypond.org.
-
-       * autogen.sh: Generate.
-
-       * stepmake/configure:
-       * configure: Regenerate.
-       
-       * stepmake/stepmake/automatically-generated.sub.make: Keep
-       original first line.
-
-       * stepmake/stepmake/toplevel-targets.make (autogen.sh): Add rule.
-
-       * stepmake/stepmake/generic-targets.make (configure): Generate
-       using autogen.sh.
-
-       * GNUmakefile.in (SCRIPTS):
-       * stepmake/GNUmakefile.in (SCRIPTS): Add autogen.sh
-
-       * stepmake/autogen.sh: New file.
-
-       * configure: Check for g++ >= 2.95.
-
-       * stepmake/aclocal.m4: Fixes for FlexLexer.h, Python headers.  GNU
-       c/c++ version checking.
-
-       * flower/include/string.hh: Typo fix.
-
-       * lily/include/midi-item.hh: Remove stray i.
-
-       * Documentation/windows/GNUmakefile: Avoid collapsed directory
-       constructs '//'.
-       
-       * stepmake/bin/install-dot-exe.sh: Filter collapsed directory
-       constructs '//' from arguments.
-
-2002-05-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scm/lily.scm (ly-load): show SCM filenames if verbose.
-
-       * lily/lily-guile.cc (init_functions): add ly-verbose function.
-
-       * lily/main.cc (setup_paths): remove LILYINCLUDE support. 
-
-       * flower/include/{pointer,tuple}*: removed.
-
-       * VERSION: released 1.5.56
-       
-       * scm/music-functions.scm (check-start-chords): function to check
-       for chords without \context. Apply automatically from parser.
-
-2002-05-16  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/bar-line.cc: remove index entries. Texinfo can't handle  :
-       in index entries.
-
-       * scm/output-lib.scm: fix ez notation stems. 
-
-       * lily/paper-outputter.cc: various fixes to speed up compilation.
-
-2002-05-16  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/lilypond-book.py: Don't import pre for Python >= 2.2
-
-2002-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scripts/lilypond-book.py (determine_format): Bugfix: correctly
-       determine latex input.
-
-       * stepmake/bin/install-sh: Include latest from libtool.
-
-       * stepmake/configure: 
-       * configure: Regenerate.
-
-       * config.make.in: Remove dead variables.  Add OPTIONAL/REQUIRED lists.
-       (USER_CFLAGS): Bugfix, include CPPFLAGS.
-
-       * configure.in: Use new OPTIONAL/REQUIRED mechanism.
-
-       * stepmake/aclocal.m4: Add mechanism for checking OPTIONAL or
-       REQUIRED programs and version.  Try to continue configuring, list
-       missing programs at the end, but don't generate a GNUmakefile if
-       REQUIRED programs are missing.  Cleanups, junk obsolete stuff.
-       Fix Cygwin detection, drop '32' suffix.  Hoping this is not too
-       fancy for some older systems.
-
-2002-05-16  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/score-engraver.cc (typeset_all): sanity check for items
-       that are Y parent to spanner. 
-
-       * lily/piano-pedal-engraver.cc (create_bracket_grobs): fix broken
-       pedal spanners.
-
-2002-05-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/*.cc: remove as many iostream use as possible. 
-
-       * flower/ : remove text-db, text-stream, data-file.
-       
-2002-05-15  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scripts/lilypond-book.py: add --no-music option: strip all blocks.
-       (completize_preamble): don't barf if no preamble present.
-       (do_file): allow extensions on --output
-
-       * scripts/ly2dvi.py (make_preview): make automatic preview of
-       first system. Small cleanups.
-
-2002-05-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * scripts/lilypond-book.py (make_pixmap): output png directly.
-
-       * mf/GNUmakefile (INSTALLATION_OUT_FILES4): create and install
-       fonts.dir file.
-
-       * lily/parser.yy (My_lily_parser): comment out code. (Causes
-       problems  with recent bison releases).
-
-       * make/lilypond.redhat.spec.in: add pfa fonts to X. 
-
-2002-05-07  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-font-lock.el: Fixes the order of the note name list.
-
-2002-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scripts/lilypond-book.py: Add html/dtml output, pseudo-filter
-       capability, --verbose option, rlimit hack.
-
-2002-05-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/piano-pedal-engraver.cc: cleanups.
-
-       * lily/accidental.cc (after_line_breaking): add break tie
-       reminders.
-
-       * lily/text-engraver.cc (try_music): don't typeset fingerings
-
-2002-05-05  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-font-lock.el: Handle \breve as a note (rest) duration.
-
-2002-05-04  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/*.cc: change gh_str02scm() to ly_str02scm().
-
-       * lily/spacing-spanner.cc (note_spacing): Bound
-       shortest-playing-length by the distance to next note. This should
-       fix chord tremolo spacing.
-
-       * VERSION: 1.5.55 released
-
-       * lily/stem.cc (off_callback): invisible stem over whole note is
-       centered on note now.
-
-       * lily/stem-engraver.cc (acknowledge_grob): X_AXIS Parent of
-       stem-tremolo is stem now.
-
-       * input/mozart-hrn*.ly: many corrections. 
-
-       * lily/dynamic-engraver.cc (acknowledge_grob): add Scripts  to
-       support for dynamic scripts.
-
-       * lily/accidental-placement.cc (position_accidentals): check for
-       collisions as well: should avoid those heads too.
-
-       * lily/beam.cc (check_concave): allow undefined gap and
-       threshold. Change the meaning of threshold/gap == 0.0.
-       (check_concave): skip Stolba concaveness check if we have a knee
-       on outer stems.
-
-2002-05-03  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * lily/chord-tremolo-engraver.cc (try_music): Handle chord
-       tremolos of dotted duration.
-
-2002-05-03  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-klef.mf: more twiddling with G clef. Almost straight
-       downstroke again. Sigh.
-
-       * lily/dynamic-engraver.cc (acknowledge_grob): center dynamic
-       script on note head.
-
-2002-05-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/slur.cc (add_column): allow slur over rest. 
-
-2002-04-27  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/beam.cc: move scoring constants out of code
-
-2002-04-25  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-nummer.mf: scalability fixes.
-
-       * mf/feta-nummer-code.mf: fixes for 5, 8. 
-
-       * mf/feta-klef.mf: G clef fixes.
-
-2002-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scripts/ly2dvi.py: Mats' fix.  Try to import pre if available.
-
-       * scripts/lilypond-book.py: %Newline, rather than glue macros
-       after \end{verbatim}.
-
-2002-04-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/lilypond-book.itely: 
-       * scripts/lilypond-book.py: Add options [no]indent, linewidth and
-       noinline.
-
-       * input/mozart-hrn3-defs.ly (startGraceContext): Customize grace init.
-
-       * scm/grob-property-description.scm (beam-space): Junk.
-
-       * lily/beam.cc (space_function): New method.
-       (get_interbeam): Call space-function.
-
-       * scm/grob-description.scm (Beam): Initialize space-function with
-       Beam::space_function.
-
-       * ly/grace-init.ly (startGraceMusic, stopGraceMusic): Set/revert
-       Beam.space-function.  Don't quantise grace beams.
-
-2002-04-23  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.54 released
-
-       * mf/feta-nummer-code.mf (code): tweaks for three, fixes for 6
-       bulb. 
-
-       * Documentation/index.texi: add PDF links.
-
-       * Documentation/user/GNUmakefile (PDF_FILES): add PDF files to website.
-
-       * lily/system-start-delimiter-engraver.cc (acknowledge_grob):
-       compare #'glyph as strings. 
-
-       * scripts/lilypond-book.py: fix by Mats. Try to import pre if available.
-
-       * scripts/ly2dvi.py (setup_environment): fix by Mats.
-
-       * lily/stem.cc (head_count): Change function name. Change property
-       to #'note-heads i.s.o.  #'heads.
-       (position_noteheads): Kern noteheads for invisible stems.
-       (before_line_breaking): Do position_noteheads() for whole note
-       heads too.
-
-       * lily/accidental-placement.cc (position_accidentals): First
-       determine refpoints, only then determine extents.  
-
-2002-04-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/accidental-placement.cc (position_accidentals): use all
-       note heads for note head-skyline. 
-
-       * scripts/lilypond-book.py (re_dict): remove all *? regexps.
-
-2002-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/windows/setup.hint (requires): Add gsview dependency.
-
-       * scripts/lilypond-book.py (re_dict): Fix for python 2.x.
-
-       * lilypond-mode.el (LilyPond-xdvi-command): Default to plain xdvi.
-
-       * input/mozart-hrn3-allegro.ly: Bugfix: include defs.
-
-2002-04-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * mf/feta-schrift.mf: lighter staccato.
-
-2002-04-22  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-nummer-code.mf (code): fixes for 3 glyph.
-
-2002-04-21  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.53 released
-
-       * scm/lily.scm (ly-load): use primitive-load for loading.
-
-       * lily/misc.cc: remove quantise_iv()
-
-       * lily/*.cc: pass read-only arrays by reference.
-       
-       * lily/grob.cc (common_refpoint_of_array): new function. Try to
-       use common_refpoint_of_{array, list} when possible.
-
-       * lily/include/accidental-placement.hh: new file.
-
-       * lily/accidental-placement.cc (alignment_callback): position
-       accidentals in a better way.
-
-       * lily/skyline.cc: new file. Compute distances for collections of
-       boxes.
-
-       * lily/include/skyline.hh: new file
-
-2002-04-20  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/accidental.cc (class Accidental_interface): grob for a
-       single accidental.
-
-       * lily/accidental-engraver.cc (number_accidentals): Cleanups. Lots
-       of reformatting
-
-       * lily/new-accidental-engraver.cc (acknowledge_grob): Work
-       together with new accidental-interface. 
-
-       * lily/include/*.hh: remove spurious set_interface() decls.
-
-       * lily/key-signature-interface.cc (brew_molecule): add padding for
-       natural signs. Make natural typesetting like the sharp.
-       
-
-       * mf/feta-klef.mf: rewrote portion of the G-clef code. Downstroke
-       is now slightly curved, not straight.
-       
-
-2002-04-18  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el: Toggles font-lock-multiline (Emacs 21.1 or newer).
-
-       * lilypond-font-lock.el: Handles multiline-strings. Fontifies notes 
-       more strictly. Use more clever regular expressions. Commented regexps.
-
-2002-04-16  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el: "C-c f" does font-lock-fontify-buffer.
-
-2002-04-15  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * scm/grob-description.scm, lily/staff-symbol.cc: added properties
-       to control width of staff symbol in ragged-right mode (by request
-       of Han-Wen)
-
-       * ly/engraver-init.ly, lily/include/my-lily-parser.hh,
-       lily/include/ligature-bracket.hh, lily/lexer.ll, lily/parser.yy,
-       lily/ligature-bracket.cc, lily/ligature-bracket-engraver.cc:
-       added support for ligature brackets (needed when transcribing
-       mensural music)
-
-2002-04-15  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-font-lock.el: Handle scheme-slurs up to seventh level.
-       Fontify notes more strictly.
-
-2002-04-15  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-din-code.mf: dynamic z sign.
-
-2002-04-13  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el: Prevent recoloring strings and comments.
-
-       * lilypond-font-lock.el: Handle block comments: block comments
-       can have also ordinary comments inside.
-       
-2002-04-13  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/stem.cc (get_default_dir): set direction to CENTER if
-       invisible. Various other fixes to deal with invisible stems and
-       stem-direction == CENTER.
-
-       * lily/rest-collision.cc (do_shift): take direction from note if
-       not set.
-
-       * input/regression/tie-grace.ly: new file.
-
-       * lily/tie-engraver.cc (create_grobs): fix tied graces.
-
-       * lily/note-spacing.cc (stem_dir_correction): set fixed space for
-       knee correction. Fixes tight spacing for knees.
-
-2002-04-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.52 released
-       
-       * lily/*.cc: add some undocced properties.
-       scm/grob-description.scm: idem.
-
-2002-04-12  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-font-lock.el: Handle slurs \( and \), numbers,
-       multi-measure rests like "R1 *4" and scheme (typically has '#' 
-       in the beginning). Small fixes. Add few reserved words.
-
-2002-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/topdocs/INSTALL.texi: Updates for MacOS X and
-       emacs mode.
-
-       * Documentation/windows/installing.texi: Suggest gswin32c (console
-       program) for getting the version.  Layout fixes.
-
-2002-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/user/tutorial.itely (Running LilyPond):  Separate
-       windows viewing commands, remove silly comment about Yap.
-
-2002-04-10  Mats Bengtsson  <matsb@s3.kth.se>
-       
-       * Documentation/topdocs/INSTALL.texi: Describe how to learn
-       configure to find kpathsea on for example Slackware 8.0.
-
-       * scripts/ly2dvi.py (non_path_environment): Set $TEXMF correctly.
-
-        * scm/grob-description.scm (MultiMeasureRest): number-threshold=1
-        by default: avoid "1" over single bar rests.
-
-       * scripts/lilypond-book.py (LatexPaper.set_geo_option): Simplify
-       and correct the handling of geometry options.
-
-2002-04-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/include/grob-interface.hh (ADD_INTERFACE): make
-       implementation for Class::has_interface automatically. Junk all
-       other implementations.
-
-       * lily/grob.cc (internal_get_grob_property): also typecheck
-       property reads. Catches even more undocced properties. Bugfixing
-       left for the uninspired masses.
-
-       * lily/beam.cc: remove end_after_line_breaking().
-
-       * lily/grob.cc (calculate_dependencies): remove list support for
-       callbacks.
-
-       * lily/font-size-engraver.cc: only do font-interface.
-
-2002-04-10  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-font-lock.el: Handle notes with cautionary accidentals.
-         Add few keywords.
-
-2002-04-09 Chris Jackson <chris@fluffhouse.org.uk>
-
-       * lily/arpeggio.cc: New function brew_chord_bracket to draw chord
-       brackets using arpeggio requests.
-       
-       * ly/property-init.ly: Shorthand \arpeggioBracket defined as the
-       molecule-callback to use for drawing the brackets.
-
-       * Documentation/user/refman.itely: 
-       * input/test/chord-bracket.ly: Chord brackets documented
-       
-2002-04-10  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-din-code.mf: tweaks for p, s. New dynamic r sign. 
-
-       * mf/feta-eindelijk.mf: tweak for eighth rest: move bulb up.
-
-2002-04-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/tuplet-bracket.cc (after_line_breaking): bugfix for forced
-       direction tuplets on beams.
-
-2002-04-08  Chris Jackson <chris@fluffhouse.org.uk>
-
-       * lilypond-indent.el: Bugfix of indentation of final point in buffer
-
-2002-04-09  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el: new command: LilyPond-un-comment-region.
-       Added 2Midi to "Command"-menu. Inspired by latex.el and tex.el: 
-       separate "Command"-menu and "LilyPond"-menu. Added "Miscellanous"-
-       submenu to "LilyPond"-menu.
-
-       * lilypond-mode.el: Added "Midi all" to "Command"-menu, i.e.,
-       an interface to play midi.
-
-2002-04-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * input/regression/script-stack-order.ly: new file.
-
-2002-04-08  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION (MY_PATCH_LEVEL): Release 1.5.51.
-
-       * mf/feta-din-code.mf: kerning for dynamics.
-
-2002-04-07  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/regression/dynamics-glyphs.ly: new file
-
-       * mf/feta-din-code.mf: dynamic tweaks. New dynamic s.
-
-       * mf/feta-nummer-code.mf: another bulb routine: mimic the bulb of
-       forte f for the 2 number. Some fixes for the other bulbed glyphs.
-
-       * Documentation/windows/gs-profile.sh:
-       * Documentation/windows/gsview-profile.sh: Remove.  Functionality
-       moved to gs/gsview windows packages.
-
-2002-04-06  Mats Bengtsson  <matsb@s3.kth.se>
-
-       * lily/stem-engraver.cc (acknowledge_grob): Revert to old way of
-       finding out the duration. Fixes chord tremolo bug. 
-
-       * lily/completion-note-heads-engraver.cc (process_music): Set
-       correct duration for all requests of the broken notes.
-
-       * input/regression/completion-heads.ly: Added example of
-       Completion_heads_engraver.
-
-       * lilypond-mode.el: Added "2Midi" command
-
-2002-04-06  Chris Jackson <chris@fluffhouse.org.uk>
-
-       * lily/tuplet-bracket.cc, scm/grob-description.scm: New
-       edge-width, edge-height and shorten-pair properties for tuplet
-       brackets.
-
-       * lilypond-indent.el: Support for blinking of matching parentheses
-       
-       * lilypond-font-lock.el: Fix fontification of closing > on its own line
-       
-       * lily/piano-pedal-engraver.cc, lily/text-spanner.cc: Fixes and
-       cleanups of piano pedal brackets.
-
-2002-04-05  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/cmbase.mf: remove file. -- do without s, r and z signs for now.
-
-2002-04-04  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-new-code.mf:  new dynamic f sign.
-       new dynamic m sign.
-
-2002-04-03  Han-Wen  <hanwen@cs.uu.nl>
-
-       * mf/feta-new-code.mf: new dynamic p sign.
-
-2002-04-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/note-spacing.cc (stem_dir_correction): only do
-       beam-correction if a beam is there. 
-
-       * lily/stem.cc (duration_log): change from flag_i (); better
-       naming.
-       (get_default_stem_end_position): fix dot/flag collision code.
-
-2002-04-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: release 1.5.50
-
-       * lily/spaceable-grob.cc (add_spring): change incorrect spring to
-       unit spring here. Reduces number of warning messages.
-
-       * lily/auto-beam-engraver.cc: change noAutoBeaming to autoBeaming.
-
-2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scm/generic-property.scm: remove generic-property, property-engraver
-
-       * lily/volta-bracket.cc (brew_molecule): use Lookup::line() for bracket
-
-       * lily/hairpin.cc (brew_molecule): use Lookup::line() for hairpins.
-
-       * ps/music-drawing-routines.ps: remove volta, tuplet, hairpin routines.
-
-       * scm/*.scm: remove volta, hairpin and tuplet functions.
-
-       * lily/rhythmic-column-engraver.cc (acknowledge_grob): don't make
-       note column for notes/stems/dots that already have parents. Fixes
-       nested grace contexts.
-
-2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/mozart-hrn-3.ly: Tweak Slur.beautiful, so that we don't
-       get too curved slurs.
-
-       * scm/slur.scm (default-slur-extremity-offset-alist) 
-       (default-phrasing-slur-extremity-offset-alist): Move slur
-       attachments further away from note-head, vertically.  Also, leave
-       a horizontal gap between slur and stem end.
-
-       * lily/beam.cc (get_interbeam): Bugfix: don't look in empty list.
-
-2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/regression/spacing-grace-duration.ly: new file
-
-       * lily/spacing-engraver.cc (acknowledge_grob): ignore grace notes
-       for shortest durations.
-
-       * lily/multi-measure-rest.cc (set_spacing_rods): tune rods to the
-       extent of the mm rest. 
-
-       * lily/spacing-spanner.cc (get_duration_space): better spacing for
-       really short notes.
-
-       * lily/tuplet-bracket.cc (make_bracket): new function
-       (get_x_offset): new function; make tuplet brackets align on stems
-       if stem has same direction.
-       (parallel_beam): be anal about matching bracket to tuplet.
-
-       * lily/lookup.cc (line): new function Lookup::line(). 
-
-       * scm/tex.scm (dashed-line): change -line to -system in names.
-
-       * lily/box.cc (add_point): new function.
-
-       * flower/include/interval.hh: new function add_point ().
-       new function widen()
-       
-2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/mozart-hrn-3.ly: Mimic Breitkopf fonts and padding.
-
-       * scm/grob-property-description.scm (number-threshold): Add
-       description.
-
-       * lily/multi-measure-rest.cc (brew_molecule): Only put number over
-       rest if #measures > number-threshold.  Use padding (well, fake
-       using it, anyway).
-
-       * scm/font.scm (make-style-sheet): New styles: mark-number,
-       mark-letter.
-       (paper20-style-sheet-alist): Add bigger bold fonts.
-
-       * lily/mark-engraver.cc (process_music): Use style mark-number or
-       mark-letter.
-
-       * .cvsignore: Ignore all kinds of lilypond input and output.
-
-       * lily/beam.cc (ADD_INTERFACE): Add concaveness-gap.
-
-2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/staff-symbol.cc (brew_molecule): make line thickness
-       adjustable.
-
-       * lily/*.cc: replace stafflinethickness by linethickness.
-
-2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/regression/beam-concave.ly: Add to-be-considered-concave
-       beam.
-
-       * lily/beam.cc (check_concave): Add check for large gap between an
-       inner notehead and the line through outer noteheads.
-
-       * scm/grob-description.scm (Beam): Add concaveness-gap, default
-       value 2.0 staff-space.
-       
-       * scm/grob-property-description.scm (concaveness-gap): Add
-       description.
-
-       * input/mozart-hrn3-allegro.ly: Fix typo.
-
-2002-03-31  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * scm/ps.scm, ps/music-drawing-routines.ps, lily/lookup.cc,
-       lily/note-head-engraver: improved implementation of roundfilledbox
-       (according to Han-Wen's request)
-
-       * lily/include/spacing-spanner.hh, lily/spacing-spanner.cc,
-       lily/gourlay-breaking.cc, lily/staff-symbol.cc,
-       lily/simple-spacer.cc: ragged-right alignment
-
-2002-03-29  Han-Wen  <hanwen@cs.uu.nl>
-
-       * input/regression/spacing-note-flags.ly: new file
-
-       * input/regression/spacing-rest.ly: new file
-
-       * mf/feta-eindelijk.mf: make bbox of quarter rest tighter.
-
-       * lily/spacing-spanner.cc (note_spacing): make note spacing after
-       all grace notes tight (not only the column directly following a
-       grace note).
-
-       * scm/grob-description.scm (all-grob-descriptions): don't make
-       mm-rests larger than normal.
-
-       * mf/feta-banier.mf: make upflag narrower. Make end of flag more
-       curved. Remove white space at the right of flags.
-
-2002-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * ports/ports.make: Bugfix: ignore CVS directories.
-
-       * stepmake/.cvsignore: New file.
-
-2002-03-28  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/note-spacing.cc (stem_dir_correction): don't correct when
-       there is a flag on the stem.
-
-       * lily/multi-measure-rest.cc (brew_molecule): variable width molecule.
-
-       * scm/grob-property-description.scm (measure-length):
-       measure-length grob property.
-
-       * lily/spacing-spanner.cc (standard_breakable_column_spacing):
-       better spacing for breakable columns when they're juxtaposed: use
-       measure length if applicable
-
-       * lily/timing-engraver.cc (start_translation_timestep): store
-       measure length in breakable column at start of measure.
-
-2002-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * ROADMAP: Add description for ports dir, to check email upon
-       commit.
-
-2002-03-27  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.48 released
-       
-       * lily/multi-measure-rest.cc (symbol_molecule): split off from
-       brew_molecule()
-       (set_spacing_rods): Use symbol_molecule() to determine minimum
-       width
-       (church_rest): split off from brew_molecule()
-       (big_rest): split off from brew_molecule(). Construct using
-       variable shape.
-       
-       * mf/feta-eindelijk.mf: junk multi measure rest.
-
-2002-03-26  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/multi-measure-rest.cc (add_column): remove columns property.
-
-       * lily/dynamic-engraver.cc (process_music): add more verbose warning
-
-       * input/mozart-hrn3-romanze.ly (romanze): add mozart horn concerto
-       3 as test piece.
-
-2002-03-26  Heikki Junes <hjunes@cc.hut.fi>
-
-       * lilypond-font-lock.el (LilyPond-font-lock-keywords): most new
-       keywords covered, dropped some non-keywords, include R- and 128-notes
-
-2002-03-25 Juergen Reuter <reuter@ipd.uka.de>
-
-       * Code clean-up: Junk multiple implementations of ledger line
-       creation in note_head, custos, and porrectus.  This is important
-       since there soon will be some more applications of ledger lines to
-       come (e.g. ambitus engraver).
-
-       * Make thickness of ledger lines adjustable.  This is essential
-       for mensural notation.
-
-       * Fix some bugs in the current ledger_line implementation, most
-       notably that of the horizontal extent of ledger lines which equals
-       at least the extent of the metafont ledger_line character, and
-       which grows(!) if the desired extent shrinks below this limit.
-
-       * roundfilledbox: variable blotdiameter
-
-2002-03-24  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.47 released
-
-       * lily/line-spanner.cc (line_atom): change line-thickness to thickness
-
-       * lily/porrectus.cc:  change line-thickness to thickness, change
-       stem-direction to direction.
-
-       * scm/backend-documentation-lib.scm (check-dangling-properties):
-       Automatically detect doc'ed properties that are not in an interface
-
-       * scm/grob-property-description.scm: property cleanup. Remove many
-       paper-column props that are non-existent.
-
-       * lily/grob.cc (Grob): only use molecule_extent_proc as default if
-       the grob has a molecule-callback.
-
-       * lily/*.cc: remove many set_interface() calls, and their
-       implementations.
-
-       * input/regression/spacing-knee.ly: new file
-
-       * input/regression/spacing-clef-first-note.ly: new file
-
-       * lily/staff-spacing.cc (get_spacing_params): different spacing
-       for pref matter to note at start of line, halfway during line.
-
-       * lily/note-spacing.cc (stem_dir_correction): apply 2nd stem direction
-       correction only if stems have same direction (i.e. not for
-       stem-clef combination).
-       (stem_dir_correction): maximal correction for knees.
-
-       * lily/*.cc: many updates to interface descriptions.
-       
-       * lily/grob.cc (internal_set_grob_property): add interface check
-       for every set_grob_property call
-
-       * lily/*.cc: document interface stuff in C++
-       
-       * lily/grob-interface.cc: new file. Add grob interfaces from C++. 
-
-       * lily/volta-bracket.cc: naming: change volta spanner to
-       volta-bracket.
-
-       * input/bugs/*.ly: cleanup, remove lots of files.
-       
-       * buildscripts/mf-to-table.py (write_ps_encoding): generate
-       .encoding file. WARNING: upgrade to pktrace 1.0.3
-
-       * mf/feta-toevallig.mf: change PS name for parentheses.
-
-2002-03-23  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Use the correct unit
-       also for textheight
-
-2002-03-23  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/scope.cc: remove file .
-
-       * lily/include/scope.hh: remove file. Remove Scope class
-
-       * VERSION: 1.5.46
-
-       * lily/beam.cc (score_slopes_dy, score_stem_lengths,
-       score_forbidden_quants): ): take out of SCM, pass parameters so
-       grob props are read only once. (wtk1-fugue2 from 31 sec to 14
-       secs).
-       (calc_stem_y): robustness: take care of last_visible_stem == 0.
-
-
-       * lily/lily-guile.cc (ly_unit): return internal unit.
-
-       * scm/tex.scm (header-end): insert scaling factor, using ly-unit 
-
-       * lily/paper-outputter.cc (output_version): output internal unit
-       from Paper_outputter
-
-       * scripts/ly2dvi.py: Read unit from paper vars (43.jcn3).
-
-2002-03-22  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/ly2dvi.py: clean up old .*pk font caching code.
-
-       * scm/ps.scm: Use uppercase postscript font names for the standard
-       TeX fonts.
-
-       * scripts/ly2dvi.py, buildscripts/lilypond-{login,profile}.sh, :
-       Add all available TeX Type1 fonts, including Feta, to the
-       Ghostscript font path.
-
-       * Documentation/topdocs/INSTALL.texi (Top): Add required pktrace
-       version (affects the FontName) in lilypond.map.
-
-       * mf/GNUmakefile, Documentation/user/appendices.itely: Rename font
-       documentation file to fetaNNlist.ly to avoid name collisions between
-       lilypond generated .tex file and font .tex macros file.
-
-
-2002-03-22  Juergen Reuter <reuter@ipd.uka.de>
-
-       * mf/feta-eindelijk.mf, mf/parmesan-rests.mf: added maxima rests;
-       made mensural longa and (semi-)brevis leaner
-
-       * mf/parmesan-clefs.mf, scm/clef.scm: enhanced petrucci c clef
-
-       * lily/{{lookup,porrectus}.cc,include/{lookup,porrectus}.hh}: code
-       clean-up: moved bezier shape and slope from porrectus to lookup
-
-       * buildscripts/clean-fonts.sh: added search paths /var/cache/fonts
-       and /usr/share/texmf/fonts
-
-       * scripts/ly2dvi.py: Read unit from paper vars (43.jcn3).
-
-2002-03-22  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/text-spanner.cc (brew_molecule): add #'thickness
-       (brew_molecule): add corrections for thickness in molecule padding.
-
-       * lily/line-spanner.cc (line_atom): make function private
-
-       * scripts/lilypond-book.py (get_bbox): Use GS -sDEVICE=bbox to
-       discover bounding box. This solves the cropping problem.
-
-       * lily/bar-check-iterator.cc (process): Only resynchronize bar
-       check when it  fails. This fixes the combination of  grace notes
-       and bar checks.
-
-2002-03-21  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/repeated-music.cc (minimum_start): new Scheme callable function
-       (first_start): new Scheme callable. This will fix repeated music
-       starting with grace notes.
-
-       * lily/music.cc (start_mom): check start-moment-function grob property.
-
-       * VERSION: 1.5.45 released
-
-       * input/regression/system-extents.ly: new regression test. Test
-       System extents. 
-
-       * lily/system.cc: rename LineOfScore into System 
-
-       * lily/molecule.cc (ly_add_molecule): new Scheme ly-add-molecule.
-
-       * lily/grob.cc (ly_get_parent): new Scheme function ly-get-parent.
-       (ly_get_extent): new Scheme function ly-get-extent
-
-       * ps/lilyponddefs.ps: use output-scale for  line-x
-       definition. 
-
-       * scm/ps.scm (font-load-command): 
-       use output-scale
-
-2002-03-20  Rune Zedeler <rune@zedeler.dk>
-       
-       * lily/beaming-info.cc: Stupid typo fixed
-       
-       * lily/accidental-engraver.cc: rewrote accidental-routines to get
-       support for cross-context auto-accidentals.
-       Now the engraver can stay in Staff-context and see other contexts
-       from there.
-       Changed properties: autoAccidentals, autoCautionaries
-
-       * lily/translator-group.cc (set_children_property):
-       Function added recursively setting the same property (deep_copied)
-       for all children of a Translator_group.
-       
-       * ly/property-init.ly: added commands
-       \pianoAccidentals \voiceAccidentals
-       \modernVoiceAccidentals \modernVoiceCautionaries
-
-       * ly/engraver-init.ly: Correct initialization of new accidentals.
-       
-       * scm/translator-property-description.scm: Updated
-       
-       * input/regression/accidental-voice.ly: Added
-       
-       * Documentation/regression-test.tely: Added new test    
-
-2002-03-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.44 released
-
-       * lily/slur.cc (set_extremities): robustness fixes for #'attachment.
-
-       * scripts/lilypond-book.py (bounding_box_dimensions): bugfix.
-
-       * ly/params-init.ly (blotdiameter): use unit for blotdiameter, set
-       at 0.4 pt.
-
-       * tex/feta*.tex: remove.
-       
-       * stepmake/aclocal.m4: remove stepmake symlink. It confuses almost
-       all software dealing with it.
-
-2002-03-20  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * mf/GNUmakefile (lilypond.map): Don't prepend TeX to font name
-       (this fixes pdf output).  Drop awk dependency.
-
-       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Assume LilyPond's
-       dimensions (linewidth) are in mm.
-
-       * mf/GNUmakefile (depth): Always allow manual access to pfa target.
-
-       * tex/lily-ps-defs.tex: scaletounit using PT/IN==72.
-
-       * lily/slur.cc (get_attachment): Bugfix: correct for stem thickness.
-
-2002-03-19  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.43 released
-
-       * scm/beam.scm (beam-dir-majority-median): if majority is
-       undecided, use median. Removes a forced dir in sarabande.
-
-       * mf/feta-schrift.mf: Trill fixes, Vee fixes (upbow, ltoe, rtoe)
-
-2002-03-18 Chris Jackson <chris@fluffhouse.org.uk>
-       * lily/text-spanner.cc, lily/piano-pedal-engraver.cc: Cleanups. Edge
-       widths, heights and shortens are now customisable properties.
-       * scm/grob-description.scm, scm/grob-property-description.scm: New
-       properties added to PianoPedalBracket, unnecessary
-       Y-offset-callbacks removed from *Pedal, undocumented properties
-       fixed.
-       * Documentation/user/refman.itely: Piano pedal updates.
-
-2002-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scm/grob-property-description.scm:
-       * scm/interface-description.scm: Remove old stuff.
-
-       * scm/grob-description.scm (StemTremolo): Change beam-thickness to
-       0.48 (previously 0.42).
-       (Beam): Remove old stuff.
-
-       * lily/stem.cc: 
-       * lily/stem-tremolo.cc: 
-       * lily/beam.cc: 
-       * scm/beam.scm: Remove old stuff.  Use Beam::get_interbeam ()
-       (previously space-function).
-
-       * stepmake/bin/add-html-footer.py: Website title fix.
-
-2002-03-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * scripts/ly2dvi.py (environment): use new font searching setup.
-
-       * lily/afm.cc (afm_bbox_to_box): make code dimension independent
-
-       * lily/tfm.cc (dimensions): make code dimension independent
-
-       * ps/lilyponddefs.ps: add constant for MM and true/ps-point
-       scaling
-
-       * tex/lily-ps-defs.tex: scaling for PS points and MM.
-
-       * lily/include/dimensions.hh: try MM as internal unit.
-
-       * scm/*.scm: remove invoke-dim1
-
-2002-03-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * GNUmakefile.in (fontpaths): add fontpaths target,
-
-       * make/mutopia-targets.make: add PDF rules.
-
-       * make/mutopia-rules.make: add pdf rule.
-
-       * buildscripts/mutopia-index.py (list_item): add PDF.
-
-       * buildscripts/lilypond-profile.sh (TEXMF): typo.
-
-       * make/lilypond-vars.make: set TEXMF for the new font setup.
-2002-03-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.42 released
-       
-       * mf/feta-schrift.mf: endless twiddling of Tr.
-
-       * mf/feta-eindelijk.mf: 8th rest: make darker, top of brush lower, and
-       endless twiddling with the bulb shape.
-
-       * lily/note-head.cc (internal_brew_molecule): make ledger lines a
-       little smaller if there is an accidental.
-
-2002-03-15  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-       * buildscripts/lilypond-profile.sh: 
-       * mf/GNUmakefile (INSTALLATION_OUT_DIR*),
-       buildscripts/lilypond-login.sh, buildscripts/lilypond-profile.sh:
-       Implement new font installation strategy
-       * Documentation/misc/fontinstallation (TEXMF): Documentation of
-       the new font installation strategy.
-       * lilypond-mode.el (LilyPond-mode-map): Add shortcut "CTRL-c ;"
-       for comment-region.
-       * input/test/staff-size.ly: Simplified using StaffContainer
-       * mf/GNUmakefile (ALL_GEN_FILES): Actually generate the
-       lilypond.map file
-
-2002-03-17  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scm/ps.scm (bezier-sandwich): Draw circles at slur ends.
-
-       * lily/beam.cc (score_stem_lengths): new quanting stuff
-       (score_forbidden_quants): Second and third beam quant stuff.
-
-2002-03-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/beam.cc (least_squares): Remember least-squares-dy for
-       later use.
-       (quantise_interval): Don't quant to dy steeper that
-       least-squares-dy.  Return empty interval if no sane quants found.
-       (quantise_position): Try quantise_interval until we have
-       acceptable solution.
-
-2002-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * scm/interface-description.scm (beam-interface): Update.
-
-2002-03-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.41 released
-       
-       * mf/feta-schrift.mf: make Tr. smaller, smoother and closer.  Use
-       optima serifs on top of t, bottom of r.
-
-       * mf/feta-bolletjes.mf: make ledger line rounder. 
-
-       * mf/feta-toevallig.mf: some smallish fixes for flat sign.
-
-       * mf/feta-eindelijk.mf: make 8th rest a little darker, some more
-       parametrization.
-
-2002-03-15 Chris Jackson <chris@fluffhouse.org.uk>
-       * lily/piano-pedal-engraver.cc: Rewritten to support bracketed as
-       well as text pedal indications and a combination of both.  All
-       pedal indications are horizontally aligned on a line spanner.
-       * lily/text-spanner.cc: Edge-width property added to use in
-       bracketed piano pedals. Function setup_sustain_pedal added to set
-       the dimensions of the brackets. 
-       * scm/grob-description.scm: New *PedalLineSpanner grobs added, and 
-       some of the *Pedal properties tweaked. 
-       * scm/grob-property-description.scm: New pedal-type (*Pedal) and
-       edge-width (TextSpanner) properties.
-       * ly/engraver-init.ly: Default strings added for SostenutoPedal. 
-       * lilypond-font-lock.el: sostenuto, unaCorda and treCorde added to
-       fontified identifiers list.
-       * input/test/pedal.ly: New pedal features added. 
-       * Documentation/user/refman.itely: New pedal features documented.
-       
-
-2002-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/include/new-beam.hh: Previously new-beam.hh
-       * lily/beam.cc: Previously new-beam.cc
-       (least_squares): Bugfix: don't barf on beams with less than two
-       visible stems (tremolos).
-
-       * scm/beam.scm: 
-       * scm/grob-description.scm (Beam): Junk old beam stuff.
-       
-       
-2002-03-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.40
-
-       * mf/feta-eindelijk.mf: new 8th rest.
-
-       * mf/feta-toevallig.mf: small fixes for the sharp symbol. Don't
-       stick out of staffline
-
-       * scripts/lilypond-book.py: fixes for texi regular expressions.
-
-2002-03-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/include/new-beam.hh:
-       * lily/new-beam.cc: New file.
-
-       * flower/include/interval.hh: 
-       * flower/include/interval.tcc (delta): New method.
-       (swap): Now public (previously private).
-       
-       * scm/beam.scm (default-beam-y-quants): Bugfix: lower beam-sit by
-       1 staff-line-thickness.  Sadly, this makes dy quanting problems
-       (dy quants allowed should depend on actual left y) more visible.
-
-2002-03-13  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/beam.cc (quantise_dy): Bugfix: sign (0) = 0.  Hmm.
-
-       * scm/grob-property-description.scm (concaveness-threshold): Add
-       typecheck and description.
-
-       * scm/grob-description.scm (Beam): Remove obsolete properties, add
-       concaveness-threshold (previously concaveness).
-
-       * lily/beam.cc (check_concave): Remove choices and debugging
-       stuff: use best concaveness calculation.
-       (quantise_dy): Remove choice.  Try to never make a slope steeper
-       by quantising, but certainly never quantise a slope away.
-       (check_stem_length_f): Remove choice.  In case of lengthening
-       alowed, always lengthen to ideal length.
-
-       * Documentation/index.texi: Fix FAQ url.
-
-       * Documentation/topdocs/INSTALL.texi: Add information about fink,
-       compile fix and 1.4 specific fix that doesn't hurt 1.5.
-
-2002-03-13  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.39 released
-
-       * lily/simple-spacer.cc (add_rod): rods take precedence over
-       infinitely stiff springs. This fixes bugs with arpeggios and bar-lines.
-
-       * lily/arpeggio-engraver.cc (acknowledge_grob): clean up.
-
-       * lily/note-spacing.cc (get_spacing): only insert space for
-       accidentals if necessary.
-
-       * input/regression/spacing-accidental-staffs.ly (texidoc): update example
-
-       * lily/spacing-spanner.cc (musical_column_spacing): new
-       function. Have correct spacing from note to end-of-line as well.
-
-2002-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/topdocs/INSTALL.texi: Add section for MacOS X.
-
-       * darwin.patch: New file.
-
-       * lily/beam.cc (set_stem_shorten): Revive deceased stem shorten
-       code.  Shorten stems by fraction of stems to be shortened.
-
-       * lily/stem.cc (get_default_stem_end_position): Shorten only half
-       of shorten value for boundary cases.
-
-       * scm/grob-description.scm (Stem): Set stem-shorten to (1.0 0.5).
-       (Beam): Set beamed-stem-shorten to (1.0 0.5).
-
-2002-03-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/beam.cc (check_stem_length_f): Try to lenthen more.
-
-       * scm/grob-description.scm (Beam): Add concaveness.  Replace
-       Beam::cancel_suspect_slope with Beam::check_concave.
-       * lily/beam.cc (check_concave): Calculate concaveness of beam, and
-       set slope to horizontal if concaveness > Beam.concaveness.  This
-       handles cases that kludgy cancel_suspect_slope was meant to catch
-       very well.
-       (cancel_suspect_slope): Remove.
-
-2002-03-12 Rune Zedeler <rune@zedeler.dk>
-
-       * lily/beam.cc lily/stem.cc lily/beam-engraver.cc: allow for
-       stemLeftBeamCount and stemRightBeamCount to equal 0.
-       Fixes [c8 c4 c8]
-      
-2002-03-12  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/spacing-spanner.cc (breakable_column_spacing): Only do
-       fixed spacing for pref matter, if the next column is musical, and
-       at the same moment.
-
-       * lily/note-spacing.cc (stem_dir_correction): Use correct
-       discretionary for stem-bar spacing.
-
-2002-03-11  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.38 released 
-
-       * lily/grob.cc (warning): Use cause tracking to give more
-       meaningful errors from the backend. 
-
-       * lily/property-iterator.cc (check_grob): Warn if setting grob
-       property in unknown grob. 
-
-       * mf/feta-toevallig.mf: brushed stems for natural sign.
-
-       * lily/molecule.cc (align_to): don't translate empty molecule.
-       (this triggers a very subtle bug in time-signature.)  
-
-2002-03-10  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/spring.cc: remove file.
-
-       * input/regression/spacing-stem-bar.ly: new file
-
-       * lily/score.cc (run_translator): resurrect point-and-click
-
-       * input/baerenreiter-sarabande.ly: Copy Barenreiter beaming for
-       sarabande layout
-
-       * lily/spacing-spanner.cc (find_shortest): Shortest note for
-       spacing is now globally determined, using the most common shortest
-       note. Notes that are shorter are spaced geometrically, and with
-       expand hints. This makes spacing more even, and measures that have
-       very short notes won't be that stretched out.  
-
-       * mf/feta-klef.mf: F-clef fixes, documentation on the
-       shape. (WARNING: font changed.)
-
-2002-03-09  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/simple-spacer.cc (add_columns): support for infinitely
-       stiff springs.
-       * lily/staff-spacing.cc (get_spacing_params): space after
-       prefatory matter is fixed.
-
-2002-03-08  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/note-spacing.cc (stem_dir_correction): Correct spacing for
-       barline following an upstem.
-
-       * lily/staff-spacing.cc (extremal_break_aligned_grob): destill
-       function from next_notes_correction().
-       (bar_y_positions): idem.
-
-2002-03-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * input/regression/break.ly (texidoc): bugfix: escape \ in
-       strings.
-
-       * lily/staff-spacing.cc (next_notes_correction): Correct the
-       spacing of a note following a barline.
-
-
-2002-03-04  Glen Prideaux
-
-       * mf/feta-solfa.mf: Shaped note heads
-
-2002-03-03  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.37 released
-
-       * lily/key-signature-interface.cc (brew_molecule): rename from key_item
-       left-align molecule.
-       
-       * lily/break-align-interface.cc (do_alignment): completely
-       rewritten. Now it does not use Align_interface anymore, but a
-       separate routine. Like StaffSpacing, it reads space-alist from the
-       breakable grobs.  This allows you to set spacing using
-       
-       \property Staff.Clef \override #'space-alist = '(....stuff....)  
-       * lily/bar-line.cc, lily/include/bar-line.hh: change name from Bar
-       to Bar_line. Move files around as well.
-
-       * lily/time-signature.cc (time_signature): left align time signatures. 
-
-       * mf/feta-timesig.mf: Remove padding from C-style time signatures.
-       Corrections of the glyph shape C. Comments added.
-
-2002-03-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/spacing-spanner.cc: move from third-try.cc; rename
-       Third_spacing_spanner to Spacing_spanner.
-
-       * lily/staff-spacing.cc (get_spacing_params): redo prefatory
-       spacing stuff. Much cleaner now, and we prepare for neat spacing
-       tricks around bar lines and such.
-
-       * lily/third-try.cc (prune_loose_colunms): bugfix. Don't init
-       variables with themselves. (Ouch.)
-
-       * lily/span-bar.cc (brew_molecule): don't try to span bars that
-       overlap.
-
-2002-03-02  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.36
-
-       * lily/lily-guile.cc: isdir_b and isaxis_b changed to ly_axis_p,
-       ly_dir_p
-
-       * lily/music.cc (ly_get_mus_property): typechecking
-       (ly_set_mus_property): idem
-       (ly_make_music): idem
-       (ly_music_name): idem
-
-       * lily/chord.cc: use scm_reverse_x iso. gh_reverse()
-
-       * lily/note-spacing.cc (stem_dir_correction): correction for
-       same stem notes as well. 
-
-       * lily/pitch.cc (pitch_transpose): stricter typechecking
-
-       * mf/parmesan*mf: magnification fixes.
-
-       * Documentation/topdocs/INSTALL.texi: update RedHat reqs
-
-2002-03-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * buildscripts/mf-to-table.py (postfixes): Output also .ly file
-       documenting the font. (Doesn't work for parmesan at the moment)
-
-       * Documentation/user/appendices.itely (The Feta font): Add list of
-       Feta font symbols with names.
-
-       * mf/GNUmakefile ($(outdir)/lilypond.map): Generate lilypond.map
-       automatically
-
-2002-03-01  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/translator-group.cc (ly_set_trans_property): typechecking
-       (ly_get_trans_property): typechecking.
-
-       * lily/font-metric.cc (ly_text_dimension): typechecking 
-       (ly_find_glyph_by_name): idem.
-
-       * scm/bass-figure.scm (brew-complete-figure): support for
-       bracketed numbers.
-       
-       * lily/grob.cc (ly_get_paper_var): new function
-
-2002-02-28  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION (PATCH_LEVEL): 1.5.35 released.
-
-       * lily/lookup.cc (ly_bracket): Scheme function ly-bracket
-       (bracket): New function.
-
-       * lily/stem-engraver.cc (stop_translation_timestep): bugfix, unset
-       stemLeftBeamCount, stemRightBeamCount in stead of using #<undefined> 
-
-       * lily/third-try.cc (set_implicit_neighbor_columns): type checking
-       bugfix.
-
-       * lily/span-arpeggio-engraver.cc (stop_translation_timestep):
-       typecheck bugfix. 
-
-       * lily/grob.cc (ly_get_grob_property): be anal about types.
-       (ly_set_grob_property): idem
-
-       * lily/figured-bass-engraver.cc (process_music): move molecule
-       building completely to Scheme
-
-       * lily/include/musical-request.hh (class Bass_figure_req): Add
-       class. 
-
-       * lily/parser.yy (bass_figure): add support for space figure.
-
-       * lily/molecule.cc (ly_molecule_combined_at_edge): be anal about types 
-
-       * lily/font-metric.cc (ly_text_dimension): Scheme function ly-text-dimension
-
-       * lily/molecule.cc (ly_fontify_atom): new function ly-fontify-atom
-       (ly_align_to_x): new function ly-align-to!
-
-       * lily/font-interface.cc (ly_font_interface_get_font): new Scheme
-       function ly-get-font
-
-       * mf/feta-nummer.mf: include normal-space dimension. 
-
-       * lily/collision.cc (check_meshing_chords): don't merge collisions
-       with whole notes.
-       
-       * lily/system-start-delimiter.cc (after_line_breaking): Bugfix:
-       glyph is string.
-
-2002-02-28  Mats Bengtsson  <matsb@s3.kth.se>
-
-       * scm/tex.scm, scm/ps.scm (or): Bugfix, ps output with Guile 3.4
-
-2002-02-28  Juergen Reuter  <reuter@ipd.uka.de>
-
-       * mf/parmesan-heads.mf: bugfix: mensural note heads  (WARNING:
-       font changed)
-
-       * scm/output-lib.scm: bugfix: resort to neo_mensural chars rather
-       than mensural chars
-
-       * mf/parmesan-scripts.mf, mf/parmesan-generic.mf,
-       scm/grob-description.scm: added mensural fermata symbol
-
-2002-02-27  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.34 released.
-
-       * lily/rest-engraver.cc (create_grobs): rests can have pitches.
-
-       * lily/staff-symbol-referencer.cc (callback): assume that
-       staff-position is unset in general.
-
-       * input/regression/rest-pitch.ly: new file.
-
-       * lily/parser.yy (simple_element): rests can have pitch. Syntax:
-       a4\rest
-
-2002-02-26  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/scm-option.cc (set_lily_option): add internal-type-checks
-       as Scheme option. Run regression test by default with
-       internal-type-checking.
-
-       * lily/separating-group-spanner.cc (find_musical_sequences):  removed.
-
-       * lily/lily-guile.cc (type_check_assignment): changed functions.
-
-       * scm/*description*.scm: be anal about typechecks. Some changes
-       for internal variable names.
-
-2002-02-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * scm/ps.scm: -f ps  output for GUILE 1.4 and 1.3.4
-
-2002-02-25  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.33 released.
-
-       * mf/feta-macros.mf (flare_path): removed draw_flare, replace by
-       flare_path everywhere (c-clef, numbers).        
-
-       * lily/bar-number-engraver.cc (process_music): also print bar
-       number if measure starts with grace note.       
-
-       * input/regression/grace-bar-number.ly: new test.
-
-2002-02-24  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/figured-bass-engraver.cc (stop_translation_timestep): reset
-       rest as well.
-
-       * scm/music-functions.scm (voicify-music):  split chords into
-       different voices automatically.
-
-       * lily/music.cc (ly_music_list_p): new function
-
-       * lily/music-sequence.cc (do_relative_octave): robustification
-
-       * scm/music-functions.scm: many utility functions 
-
-       * lily/music.cc (ly_set_mus_property): add type checks to the
-       Scheme property assignment.
-
-       * buildscripts/lilypond-profile,lilypond-login.sh (TEXCONFIG):
-       dvips fixes
-
-       * mf/lilypond.map: .map file from Mats' page. 
-
-2002-02-21  Juergen Reuter <reuter@ipd.uka.de>
-
-       * Some more parmesan related fixes;
-
-       * Custos: varying shape (in particular, stem length), depending on the
-         vertical position of the custos (on staffline / between stafflines);
-
-       * Custos: added grob property "neutral-direction" (same semantics as
-         with stem); introduced new grob property "neutral-position";
-
-       * Time-signature: print a warning when resorting to default layout.
-
-2002-02-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/translator-group.cc (add_fresh_simple_translator): remove
-       function; initialize() is called through
-       Translator_group::initialize().
-
-       * lily/third-try.cc (prune_loose_colunms): add constraints (rods)
-       for the neighbors of a loose column.
-
-       * lily/line-of-score.cc (set_loose_columns): be more intelligent:
-       position loose columns so that they don't collide.
-
-2002-02-21  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.32 released.
-
-       * scm/font.scm: remove font-name symbol.
-
-       * mf/GNUmakefile: use pktrace for making PFAs
-
-       * make/lilypond.redhat.spec.in: use pktrace when making RPMs
-
-       * lily/rest-collision.cc (do_shift): read direction field from
-       rest-column in case of note-rest collision. This should fix some
-       problems with rest collisions.
-
-2002-02-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/note-heads-engraver.cc (process_music): Removed easyPlay
-       property.
-
-       * lily/note-head.cc (brew_ez_molecule): Remove note-character
-       property. Read pitch directly from #'cause.
-
-       * mf/feta-puntje.mf: bugfix
-
-2002-02-19  Juergen Reuter <reuter@ipd.uka.de>
-       
-       * mf/*.mf: tried to fix ancient-font.ly. WARNING: Font changed.
-
-2002-02-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/windows/compiling.texi: Update.
-
-       * Documentation/index.texi: Add link to orphaned compiling for
-       windows page.
-
-       * Documentation/footer.html.in: Comment fix.
-
-       * stepmake/bin/add-html-footer.py: Python2.[12] re workarounds.
-
-2002-02-18  Han-Wen  <hanwen@cs.uu.nl>
-       
-       * VERSION: 1.5.31 released
-
-       * lily/new-spacing-spanner.cc: remove file.
-
-       * lily/third-try.cc (do_measure): only take spacings into account
-       if they pertain to the column pair under consideration. This fixes
-       spacing bug when mixing eighths triplets and normal eighths.
-
-       * lily/note-head.cc (brew_molecule): revert ledger change: ledger
-       lines don't take up space anymore. Document why in note-head.cc
-       comment.
-
-2002-02-17  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/font-interface.cc (get_font): reinstate
-       #'font-magnification. See input/regression/font-magnification.ly
-       (get_font): Change the definition of  #'font-name grob property.
-
-       * lily/grob.cc (get_uncached_molecule): output origin for grobs
-       that have a #'cause field.
-
-2002-02-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * Documentation/topdocs/INSTALL.texi: remove type3 stuff. 
-
-       * mf/GNUmakefile:  remove metapost stuff
-
-       * stepmake/aclocal.m4: remove metapost detection stuff.
-
-2002-02-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * mf/GNUmakefile (FET_FILES): 
-       (FONT_FILES): Include parmesan.
-
-       * stepmake/bin/packagepython.py (make_assign_re): Bugfix.  Use re
-       iso regex, regsub
-
-       * buildscripts/clean-fonts.sh (FILES): Clean parmesan too.
-
-       * Documentation/user/refman.itely (Paper size): Quote braces.
-
-2002-02-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * stepmake/aclocal.m4: fixed bison version check to be more
-       robust.
-
-       * lily/stem.cc (position_noteheads): fix for cluster chords.
-
-       * mf/*.mf: many blotting/pixel rounding fixes  by Rune Zedeler
-
-       * python 2.2 support.
-
-2002-02-04  Han-Wen  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.30 released
-
-       * lily/dynamic-engraver.cc: add doco about DynamicLineSpanner
-
-       * Documentation/user/refman.itely (Dynamics): add a note about
-       DynamicLineSpanner.
-
-       * scm/grob-description.scm: add a 'translator-type?  object
-       property, so that \property Foo.Bar =\turnOff doesn't cause
-       type check warning.
-
-       * lily/translator-group.cc (add_fresh_group_translator): make
-       new add-translator functions to make distinction between fresh and
-       used group-translators. Fixes problem with scripts on auto-changing voice 
-
-       * lily/timing-engraver.cc: make Timing_engraver instantiatable,
-       add to Score_performer. Fixes bar checks in MIDI
-
-       * lily/tie-engraver.cc (create_grobs): Use pitches to compare note
-       heads. Fixes many quirks with ties.
-
-       * lily/engraver.cc (announce_grob): Use SCM argument. Store cause
-       in the grob property #'cause, instead of using Grob_info.
-
-       * ly/engraver-init.ly (StaffContext): move Dot_column_engraver to
-       staff context, fixing dot alignment on collisions.
-
-       * lily/beam-engraver.cc (try_music): remove can't find beam start
-       warning, so that skipTypesetting won't complain.
-
-2002-02-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * Documentation/user/refman.itely (Paper size): Documentation fix,
-       papersize
-
-       * lily/text-engraver.cc: Bugfix: textNonEmpty works again
-
-       * scm/grob-description.scm: \breathe: Use feta font comma by default
-
-2002-01-23  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * input/template/piano-dynamics.ly (pedal): Simplified
-
-2002-01-18  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * ly/engraver-init.ly: avoid warnings on \skip in lyrics
-
-2002-01-10  Mats Bengtsson  <matsb@s3.kth.se>
-
-       * lilypond-mode.el (LilyPond-command-query): ignore case.
-
-2002-02-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.29 released
-
-       * all files: change 2001 to 2002 in headers globally
-
-       * mf/parmesan20.mf: split out ancient notation into parmesan ("old
-       cheese") font. WARNING: fonts changed.
-       
-2002-02-01  Juergen Reuter <reuter@ipd.uka.de>
-
-       * mf/*.mf: Fixed some blot_diameter related flaws in some feta symbols
-       
-       * mf/*.mf: Added some more vaticana/solesmes style font symbols
-       
-       * mf/*.mf: Bugfix: renamed subbipunctum -> inclinatum
-
-       * mf/*.mf: Fixed a few typos in various .mf files
-
-2002-01-17 Rune Zedeler <rune@zedeler.dk>
-       
-       * mf/: added macro soft_penstroke
-       
-              softened some glyphs
-              redrawn triangular noteheads
-              redrawn tab-clef
-              added classical quarter rest
-       
-       * lily/stem.cc: Bugfix: Stem-attachment when staff_space!=1
-       * lily/bar.cc: Bugfix: repeat dots when even number of staff
-       lines and staff_space>=2
-       * lily/rest.cc: Use default rests when current style glyphs not
-       found - this allows
-       \property Staff.Rest \override #'style = #'classical
-
-2002-01-30  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * input/bugs/first-tie.ly: New file.
-
-       * input/bugs/spacing-clash.ly: New file.
-
-2002-01-29  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * po: regenerate.
-
-2002-1-24 Chris Jackson <chris@fluffhouse.org.uk>
-
-       * lilypond-indent.el: New file providing indentation for
-       parenthesised blocks of lilypond code in Emacs
-       
-       * lilypond-font-lock.el: Changes to the syntax table to facilitate
-       indentation and handle block comments properly. Distinguish
-       accents from close-brackets in fontification.
-
-       * lilypond-mode.el: LilyPond-indent-command set appropriately.
-
-2002-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/windows/installing.texi: 
-       * Documentation/windows/compiling.texi: Include from 1.4.10.
-
-       * Documentation/windows/gs-profile.sh: previously lily-gs.sh
-
-       * input/bugs/first-midi-tie.ly: New file.
-
-2001-12-29  Han-Wen  <hanwen@cs.uu.nl>
-       
-       * VERSION: 1.5.28 released
-
-        * lily/parser.yy (My_lily_parser): Slightly kludgy warning for
-        illicit beams on [c4 c4] etc.
-
-        * lily/bar-check-iterator.cc (Bar_check_iterator): new
-        file. Make separate iterator for Bar_checks. Bar_check now happen
-        outside engravers, meaning that you can use them with
-        skipTypesetting. Associated changes in other files.
-        
-        * lily/new-spacing-spanner.cc (stem_dir_correction): removed
-        function
-        
-        * lily/spacing-spanner.cc (stem_dir_correction): removed function
-
-        * lily/include/grob.hh (unsmob_item, unsmob_spanner): Add functions
-
-        * lily/bar.cc (before_line_breaking): remove bar-line spacing code.
-
-        * lily/stem.cc (set_spacing_hints): removed function
-
-        * lily/note-spacing.cc (stem_dir_correction): new stem-direction
-        correction for spacing; now take vertical extents of the stem into
-        account.  
-
-        * lily/third-try.cc: More hacking to get spacing working.
-
-        * lily/note-spacing-engraver.cc: new file, Note_spacing_engraver
-        sits at staff level and creates note spacing objects. Scrap it
-        again, and document why.
-
-        * lily/include/group-interface.hh: rename functions. 
-
-2001-12-27  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * stepmake/stepmake/c++-rules.make:
-       * stepmake/stepmake/c-rules.make: Fixes for bison-1.28.
-
-2001-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * make/lilypond-vars.make: 
-       * scripts/ly2dvi.py (setup_environment): 
-       * scripts/lilypond-book.py (setup_environment): Also set tex
-       memory options.
-
-2001-12-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * VERSION: 1.5.27 released.
-
-       * Documentation/user/refman.itely (Bar numbers): added bar number
-       documentation.
-
-       * scm/font.scm (make-style-sheet): Fixes to make staff-sizes work
-       again.
-
-2001-12-22  Mats Bengtsson  <matsb@s3.kth.se>
-
-       * tex/lilyponddefs.tex: Make sure interscorelinefill=1 doesn't
-       spread the last few lines all over the last page of a score.
-
-2001-12-24  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/third-try.cc: 3rd try at revising spacing
-       engine. Not yet finished.
-
-       * lily/paper-column.cc (brew_molecule): print debugging marks on a
-       paper-column.
-
-       * lily/tie-engraver.cc (class Tie_engraver): Use busyGrobs for
-       collecting past note heads.
-
-       * lily/note-heads-engraver.cc (try_music): Remove end_mom_
-       stuff.
-
-       * lily/grob-pq-engraver.cc (class Grob_pq_engraver): New file, new
-       class. Keep a queue of grobs that are still playing in busyGrobs. 
-
-       * lily/lyric-combine-music-iterator.cc (get_busy_status): New
-       function. Use busyGrobs to detect playing notes.
-       
-2001-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * GNUmakefile.in: make lilypond-fource file, so PK fonts are not
+       removed every make-run.
  
-       * Documentation/topdocs/INSTALL.texi: Added note about broken
-       python-2.1.  Updated note for Debian's broken (well, broken for
-       our use anyway) tex configuration.
-       
-       * scripts/lilypond-book.py (re_dict): python2.2 fix.
-       
-       * stepmake/stepmake/c++-rules.make ($(outdir)/%.hh): 
-       ($(outdir)/%.cc): Adapted to bison-1.30; added bison < 1.30 fix.
-       
-       * scripts/lilypond-book.py (bounding_box_dimensions): Bugfix.
-       (But left margin of png's still misses a few pixels.  Arg.)
-       
-2001-12-16  Heikki Junes  <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el (LilyPond-command-next-midi): Make
-       possible to kill midi-process (using "C-c C-m").
-
-2001-12-14  Han-Wen  <hanwen@cs.uu.nl>
-
-       * scripts/lilypond-book.py (LatexPaper.set_geo_option):
-       Convert strings with dimensions to numbers.
-
-       * lily/volta-engraver.cc:  only make a  bracket for the top staff,
-       as found in stavesFound. 
-
-       * lily/bar-number-engraver.cc: remove staff administration. 
-
-       * lily/mark-engraver.cc (acknowledge_grob): remove staff
-       administration. This breaks support for invisible-staff.
-
-       * lily/staff-collecting-engraver.cc: new engraver. Collects staff
-       symbols into stavesFound.
-
-       * lily/score-engraver.cc (acknowledge_grob): Acknowledge spacing
-       grobs, and put them into columns.
-
-       * lily/engraver-group-engraver.cc (acknowledge_grobs): Include the
-       Engraver_group_engraver as a potential candidate for ack'ing grobs.
-
-2001-12-13  Heikki Junes  <hjunes@cc.hut.fi>
-
-       * lilypond-mode.el (LilyPond-command-next-midi): Play next (or last)
-       midi section in the Emacs-mode, so it is possible to play certain
-       score in a multiscore lilypond-file.
-        
-2001-12-09  Rune Zedeler  <rune@zedeler.dk>
-       * lily/lily-guile.cc: Added ly_assoc_front_x() and ly_assoc_cdr()
-       (FIXME: not accessible from guile)
-       
-       * lily/accidental-engraver.cc: rewrote accidental-routines to get
-       better support for Kurt Stone's suggestions.
-       Removed properties: noResetKey, forgetAccidentals, autoReminders,
-                           lazyKeySignature.
-       Changed property:   localKeySignature.
-       Added properties:   extraNatural, autoAccidentals,
-                           autoCautionaries.
-
-       (BUGFIX: broken-tie-support destroyed in 1.5.16)
-       
-       * ly/property-init.ly: added commands
-       \defaultAccidentals \modernAccidentals \modernCautionaries
-       \noResetKey \forgetAccidentals
-
-       * ly/engraver-init.ly: Correct initialization of new accidentals.
-       
-       * scm/translator-property-description.scm: The new properties
-       added.
-       
-       * input/: Some examples added, some changed.
-       
-       * Documentation/regression-test.tely: Added quick test of new
-       accidentals.
-
-2001-12-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * scripts/lilypond-book.py (scan_latex_preamble): don't crash if
-       header not found
-
-2001-12-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/beam.cc (before_line_breaking): Make beams  without stems
-       or with only one stem disappear.
-
-2001-12-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * bibtools/bib2html.py: Add simple bib2html convertor, and .bst
-       files to have standardised HTML bibliography output. Update build
-       docs to reflect this.
-
-       * lily/include/simple-spacer.hh (struct Simple_spacer): add
-       active_count_, so that we don't have to look for active springs
-       anymore.
-
-       * scm/interface-description.scm,scm/grob-property-description.scm:
-       Add 'penalty
-
-       * lily/simple-spacer.cc (solve): Handle forced line breaks
-       here. Fixes problems when combining linebreaks with non-fitting
-       line configurations
-
-2001-12-05  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * 1.4.9.jcn3 forward ports.
-       
-       * Really included .cvsignore.
-
-       * Included Han-Wen's uu1 windows fixes.
-
-       * Bugfix: lilypond-profile.sh: append to GS_FONTPATH, GS_LIB.
-
-       * Added Cygwin setup.hint
-
-       * Removed tex, python wrappers and postinstalls to go with Cywgin's
-       tetex/texmf, python installations.
-
-       * Updated cygwin installer.
-
-       * ly2dvi: Don't accept filenames with spaces (+ fix).
-
-2001-12-03  Han-Wen  <hanwen@cs.uu.nl>
-
-       * ly/engraver-init.ly (VoiceContext): fix text engraver ordering.
-
-       * lily/translator-def.cc: Remove manual symbol caching.
-
-       * lily/script-column.cc (before_line_breaking): robustness check:
-       don't crash if no direction set.
-
-       * scripts/pmx2ly.py: Key and clef change support (Laura Conrad)
-
-       * scripts/pmx2ly.py (Parser.parse_header): more generic header
-       parsing.
-
-
-2001-12-01  Han-Wen  <hanwen@cs.uu.nl>
-
-       * lily/note-head.cc (head_extent): added to compute width without
-       ledger lines. By default, ledger lines take up width now.
-
-       * input/regression/fingering.ly: demonstrate auto fingering.
-       Horizontal placement is still buggy. 
-       
-       * lily/fingering-engraver.cc (class Fingering_engraver):
-       added. Provides support for horizontal fingering scripts
-
-       * lily/include/grob.hh: Naming: change parent_l() into get_parent()
-
-       * lily/side-position-interface.cc (add_staff_support): add staff
-       only for Y-axis side positions.
-
-       * lily/parser.yy (request_chord): Fix mem leak.
-
-       * lily/musical-request.cc (transpose): moved to Music::transpose()
-
-       * lily/include/grob-info.hh: Change music pointer to SCM, so we
-       can store grobs as grob-creation cause as well.
-
-       * lily/group-interface.cc (add_thing): efficiency tweak: reuse
-       handle when adding. Use precomputed symbols throughout lily.
-       
-       * lily/rhythmic-column-engraver.cc: make NoteSpacing grobs to keep
-       track of spacing issues.
-
-       * lily/separating-line-group-engraver.cc: make StaffSpacing grobs
-       to keep track of staff spacing
-
-2001-11-30  Jan Nieuwenhuizen <janneke@gnu.org>
-
-       * Rewrote new conditional guile >= 1.5 compilation switches, to keep
-         code clean from conditionals and have a concentrated sets of
-         compatibility fixes for old guile versions.
-
-       * Fixes for guile 1.4, including embedded ps.
-
-2001-11-30  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-       * lily/stanza-number-engraver.cc (process_music): allow pairs as
-       well for markup texts.
-
-       * lily/musical-request.cc (length_mom): kludge for null pointer.
-
-       * scm/sketch.scm (sketch-output-expression): guile 1.4 compatibility
-
-       * scm/lily.scm (sign): bugfix
-
-       * CHANGES: Change log instated.
+       * make/ly-rules.make: don't remove .tely file.
 
-       * stepmake/add-html-footer.py: @BRANCH@ tag insertion.
+       * input/test/chords.ly (scales): whole notes only. Prevents
+       weird breaks.
 
index b368d6fc30e7ae663b528254eeda051f35582797..7f60599f76b2646725cd03d8381c147b6395ff5c 100644 (file)
@@ -219,6 +219,33 @@ note = {A no-science-here review of Encore. HWN}
 }
 
 
+@Book{selfridge-field97:_beyon_midi,
+  editor =      {Eleanor Selfridge-Field},
+  title =       {Beyond MIDI},
+  publisher =   {MIT Press},
+  year =        1997,
+  note = {Description of various music interchange formats.}
+}
+
+
+@Book{hewlett01:_virtual_score,
+  editor =      {Walter B. Hewlett and Eleanor Selfridge-Field},
+  title =       {The Virtual Score; representation, retrieval and restoration},
+  publisher =   {MIT Press},
+series = {Computing in Musicology},
+  year =        2001
+}
+
+
+
+@InProceedings{hoos98:_guido_music_notat_format,
+title={The {GUIDO} Music Notation Format---A Novel Approach
+for Adequately Representing Score-level Music},
+author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian},
+booktitle = {Proceedings of International Computer Music Conference},
+year = 1998,
+pages = {451--454},
+}
 
 % LIME
 @Article {haken93,
diff --git a/Documentation/misc/CHANGES-1.5 b/Documentation/misc/CHANGES-1.5
new file mode 100644 (file)
index 0000000..5f42581
--- /dev/null
@@ -0,0 +1,829 @@
+1.5.23
+======
+
+* Bugfix: be anal about slur dimensions.
+
+* Bugfix: insert extra margin around pixmaps.
+
+* lilypond-book: magnification option for EPS
+
+1.5.22.jcn1
+===========
+
+* Resurrected experimental sketch output, now with dispatch.
+
+* Bugfix: prefix directory defaults to DIR_DATADIR if not defined.
+
+* Rune: more reliable repeat dots (WARNING: FONT CHANGED)
+
+1.5.22.hwn1
+===========
+
+* Dashed slur bugfix. 
+
+* GUILE 1.4 compatibility.
+
+
+1.5.22
+======
+
+1.5.21.hwn1
+===========
+
+* Crop EPS files before rendering in lilypond book. This makes make web
+a lot faster.
+
+* Added links to internals documentation
+
+* Small dimcache (darn gcc-2.95) bugfixes.
+
+* Implemented Engraver::top_engraver ().
+
+* Completion_heads_engraver: engrave tied notes across bar lines
+automatically. Related changes:
+
+  - duration-log of Note head can be larger than 2
+
+  - make public class Grob_pitch_tuple
+
+* Make old spacing engine default again. The new one is still rather
+sucky.
+
+1.5.21
+======
+1.5.20.jcn1
+===========
+
+* Fixed direct PostScript output, and changed default fonts.
+
+* Bugfix: automaticMelismata in refman (huh, or should lily be changed?)
+
+* pktrace:
+
+      cp mf/out/feta20.* $HOME/usr/src/sketch-0.7.8/Resources/Fontmetrics
+      echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspec\ific,feta20' >> $HOME/usr/src/sketch-0.7.8/Resources/Fontmetrics/std.sfd
+
+
+1.5.3.lec1
+==========
+abc2ly fixes:
+
+      fix to Q: support
+      partial fix for tuplet parsing
+      fix for blank first T: line
+      escape "'s in header lines
+      fix for dotted breve in whole note duration
+      M:none no longer attempts to insert "\time none"
+
+
+1.5.20.uu1
+==========
+
+* etf2ly robustness fixes
+* Rewrote outputting backend. Now uses GUILE modules.
+
+* Line breaking bugfix.
+
+* Bugfix: Unfolded_repeat_iterator::add_repeat_command().
+
+1.5.20
+======
+
+1.5.19.jcn3
+===========
+
+* Sketch output:
+
+  - Sketch uses feta font.
+  - Fix to linewidth and feta fontsize.
+   - mf-to-table: write dummy values in afm to make sketch happy.
+  - Fixes to glyphs: rectangles beziers work now.
+   - Bugfix: sketch.scm: use primitive-eval.
+
+* Sketch and feta Type1 fonts:
+   - textrace:
+      wget http://www.inf.bme.hu/~pts/textrace-latest.tar.gz
+      tar xzf textrace-latest.tar.gz
+      (cd autotrace-0.27ap; ./configure; make)
+      ./traceall.sh feta20 feta20.pfb $HOME/usr/src/lilypond/mf/out
+
+  - copy mf/out/feta20.* to sketch/Resources/Fontmetrics:
+
+   - append to sketch/Resources/Fontmetrics/std.sfd:
+      echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspecific,feta20' >> $HOME/usr/src/sketch/sketch/Resources/Fontmetrics/std.sfd
+
+   - Hmm, then find that
+
+     + Sketch accesses characters by name, ie, the
+clefs      name characters have in default text fonts.  Luckily, textrace
+      mangles the feta names too.  Sadly, textrace chooses different names
+      for characters > 128.
+
+    + Textrace mangles font name by prepending `TeX-'.  Doesn't seem to
+      pose a big problem; we'll have to pefix `TeX-' to feta fonts.
+
+    + Sadly, only the sketch-0.7.x is happy with the feta type1 font, but
+      printing is not yet implemented?
+
+ * Remove modules directory (again?).
+
+
+1.5.18.moh1
+===========
+
+* Further work on more flexible control of lyric alignment.
+   - new properties "alignment", "ignore-length-mismatch", "begin-alignment" a\nd "end-alignment" to control non-centered lyric alignment
+
+
+1.5.19.hjj1
+===========
+
+* Added \portato.
+
+1.5.18.jcn1
+===========
+
+* Moved python modules to ./python.
+
+* Better python module stepmake support.
+
+* Bugfix ly2dvi etc: LILYPONDPREFIX should override datadir.
+
+1.5.18.hwn2
+===========
+
+* Put lilylib back into ly2dvi
+
+* Cache symbols for {get,set}_{grob,music}_property and
+{get,set}_property.  Speedup: about 20 percent.
+
+* Remove C++ version of midi2ly
+
+* Inline Grob::parent_l (Axis), String::String() speedup 2 % 
+
+* First try at Sketch (sketch.sourceforge.net) output.
+
+
+1.5.18.rz1
+==========
+
+* subdivideBeams fix - setting property right after beam definition no
+  longer affects that beam.
+
+* Minor docu updates, accidental cleanups and example updates
+
+* Added Accidental grob properties paren-cautionaries and
+  cautionary-size controlling the appearance of cautionary accidentals
+
+1.5.18
+======
+1.5.17.jcn6 - aka: `pgwit!  Ah, dacht dat-i zo wel aardig was.'
+===========
+
+* Some more hacking at midi2ly.py:
+   - options and stuff: moved to library for ly2dvi, midi2ly, mup2ly,
+       update-lily
+   - handle keys and note names
+   - simple quantising
+   - handle tuplets and silly durations
+   - guess clef
+   - don't include empty staffs in score
+   - print relative pitches by default
+   - don't repeat duration by default
+   - bugfix: allow 8th notes too
+   - include new version of input/test/midi-scales.ly
+   - added barchecks + fix
+   - bugfix for relative mode
+
+* Shorter MIDI creation texts.
+
+* Bugfix: Key_change_req::transpose: don't deliver reversed list.
+
+* Bugfix: Key_performer::create_audio_elements: transpose list to
+`do', before determining tonality.
+
+1.4.8.moh1
+==========
+
+* new property "end-alignment" to control non-centered lyric alignment
+
+1.5.17.hwn1
+===========
+
+* Be quicker in Grob::handle_broken_dependencies().
+
+* --strict option for abc2ly, exit if an error is found.
+
+* GUILE 1.3.4 fix.
+
+
+1.5.17
+======
+
+1.5.16.hjj2
+===========
+
+* Emacs-mode: Inserting tags
+
+* Enable python2.1/Python.h
+
+1.5.16.hwn1
+===========
+
+* Add unfold-repeats function (Rune Zedeler!) to standard init SCM file.
+
+* Bugfix: spacing is no longer confused by coupled clefs, where one of the
+clefs is loose, and the other not.
+
+* Robustness fix for Slur. Don't crash if attachment not set.
+
+* Arpeggios can now have arrows on the top or bottom to determine
+their direction. (MF code by Chris Jackson)
+
+* Symbol cache bugfix in system-start-delimiter.cc -- may switch
+symbol cache off for gcc 2.96?
+
+* MikTeX PDF detection bugfix (Mats Bengtsson)
+
+* Some more random hacking at midi2ly.py. (jcn1)
+
+* Inline unsmob_XXX functions.  Speedup of 6% on wtk1-fugue2.
+
+1.5.15.jcn1
+===========
+
+* Fixes for latest guile cvs.
+
+* Add --enable-optimising flag to configure (Huh?).
+
+* Only inline string utlis when optimising.
+
+* Compile fix.
+
+1.5.15.rz1
+==========
+
+* added property autoReminders, automatically creating reminder
+  accidentals. - major changes to accidental-engraver.
+
+1.5.15.hwn1
+===========
+
+* Junk translator-description.scm
+
+* Make Repeated_music use 'element and 'elements in stead of 'body and
+'alternatives.  Associated changes in parser and music-sequence.cc.
+
+* Change Part_combine_music and Lyric_combine_music to use 'elements
+music property.
+
+* Porrectus patch (Juergen Reuter)
+
+ - Rewrote code for vaticana style porrectus grob; the solid shape is
+  now drawn as a single bezier sandwich rather than composed from a
+  couple of misused slurs.  Looks now much nicer.
+
+ - Added code to forbid line-breaking inbetween a porrectus
+  (preliminary; to be moved to ligature engraver framework).
+
+ - Added auto-properties property for automatic determination of grob
+  properties add-stem and stem-direction from musical context.
+
+ - Small clean-ups.
+
+
+1.5.14.jcn6
+===========
+
+* Some more random hacking at midi2ly.py.
+
+* Slightly better doco for r, s and \skip, with examples.
+
+* Bugfixes: add-html-footer.py and @MAILADDRESS@.
+
+* Some website related fixes (thanks Tiggr).
+* Ugly hack in add-html-footer for disabling tutorial and refman links
+in sidebar.
+
+* Guile > 1.4 compilation fixes.
+
+* Website bugfix: mailto: (thanks David Boersma).
+
+1.5.14.hwn1
+===========
+
+* Rename: Local_key_engraver to Accidental_engraver
+
+* Add documentation for accidentals grob property.
+
+* Don't make double accidentals even if two of the same notes are
+specified. (Thanks Rune)
+
+* Search all staff-bars for non-empty barline to determine type. This
+fixes span-bars with the lowest staff hara-kiried. (Thanks Rune)
+
+
+1.5.14.rz1
+==========
+
+* Less buggy beam-split
+
+* Added subdivideBeams, subdividing beams on beats
+
+1.5.14
+======
+
+1.5.13.hwn2
+===========
+
+* Bugfix: revert font-relative-size for grace Accidentals
+
+* Bugfix: hara kiri'd piano staffs doesn't take space anymore.
+
+* Bugfix: reinstate rest-collisions.
+
+* Bugfix: key items have the c0 position again.
+
+* Make \property Voice.GrobName = \turnOff work again.
+
+* More intelligent symbol-cache, in less code. Turned off by default, doesn't
+work with -O2 yet.
+
+* Documentation fixes: change documentation of Moment and make-moment,
+add Translator::{name,description}
+
+* Junk STL implementation of Scheme_hash_table in favor of GUILE
+hashtables with automatic resizing. 
+
+
+1.5.12.jcn2
+===========
+
+* half-baken --with-kpathsea configuration fix.
+
+* ly2dvi: add `.' to TEXINPUTS to catch broken TEXINPUTS settings.
+
+* guile-1.4 compile fix.
+
+1.5.12.hwn1
+===========
+
+* Move engraver descriptions into the C code.  They are accessible
+from Scheme. Grand rehacking to make stuff work again.
+
+* Precompute which engravers are eligible to acknowledge a certain
+type of grob. Speedup: approx 10 % on interpretation phase.
+
+
+1.5.12
+======
+
+1.5.11.jcn1
+===========
+
+* Add -p flag to package-diff.py's diff invocation, to show changed function.
+
+* Add configure checks for python headers.
+
+* Make midi module.
+
+1.5.11.hwn1
+===========
+
+* Allow breaks at measures starting with grace notes.
+
+* Bugfix: don't give up when there is one entirely unspaceable
+measure/line.
+
+* Midi module: many bugfixes.
+
+* midi2ly python blurble.
+
+
+1.5.11
+======
+
+1.5.10.jcn3
+===========
+
+* include python midi parser.
+
+* stepmake updates.
+
+* add .cvsignore patterns for making patches the standard, manual way.
+
+* midi2ly: support chords, duration conversion rewrite.
+
+* parser.yy: Guile > 1.4 compilation fix; scm_unprotect_object is deprecated.
+
+1.5.10.hwn1
+===========
+
+* Rational bugfix.
+
+* Cleaned up definitions of SystemStartDelimiter
+
+* WTK fix.
+
+* Porrectus patch (Juergen Reuter):
+
+- Syntax change: \porrectus -> \~
+- New porrectus properties: porrectus-width, line-thickness.
+- Bugfix: left<->right confusion in porrectus-engraver.cc.
+- Bugfix: Box dimensions for horizontal slope molecule in porrectus.cc.
+- Enhanced mensural style porrectus shape, considering optical
+  illusion in vertical endings due to slope.  Simplified drawing.
+- Code clean-up.
+
+1.5.10
+======
+
+1.5.9.hjj2
+==========
+* Emacs-mode: Keyboard shortcuts, separated identifiers from keywords
+and spacing not necessary in font-locking.
+
+1.5.9.jcn3
+==========
+
+* add-html-footer.py: use html <title> as fallback title for pages
+where @WEB-TITLE@ is not defined.
+
+* Bugfix: stepmake: don't go building executables all over the place,
+if NAME is set in environment.  Some cleanups. 
+* add-html-footer.py: remove href to self.  Substitute @at-variables@
+defined in html comments.  Any occurrence of
+
+       <!-- @foo@=bar -->
+
+in the html page, will subsequently substitute any occurrence of @foo@
+in the same html page with `bar'.
+
+* Bugfix: update-lily: remove unprotected gettext.py include.
+
+* po update.
+
+* windows doc update.
+
+1.5.9.hwn3
+==========
+
+* Optimizations:
+  - speed up Rational::operator+= 
+  - speed up Rational::compare ()
+  - don't store origins if point-and-click not set. 
+
+* \figures input mode:  \figures { <4 6+> <3- 5>2. } 
+
+* Obscure bugfix: call kpsewhich with --format for mfplain.
+
+* Don't put  volta bracket on top of following note (vertically).
+
+* Collision fixes.
+
+* Crude figured bass support (supports rests as well, now)
+
+* Bugfix: various collision issues, updated regtest example.
+
+* Porrectus support (Juergen Reuter)
+
+1.5.9
+=====
+
+1.5.8.uu1
+=========
+
+* Mensural rests (Juergen Reuter)
+
+* Swedish translation (Thanks to the translation project)
+
+* Bugfix: down 8th flag restored.
+
+* Bugfix: span-bars and hara-kiri.
+
+* More advanced collisions: handle meshed chords as well.
+
+1.5.8.jcn1
+==========
+
+* Add mktextfm wrapper for windows (thanks Mats).
+
+1.5.8.hjj1
+==========
+
+* Emacs-mode: new keywords, reserved words, notenames and brackets are
+font-lock-keywords; implementation encourages spacing/indenting.
+
+
+1.5.8
+=====
+1.5.7.hwn1
+==========
+
+* reinclude input/bugs/*.ly
+
+* Mensural flags (Juergen Reuter)
+
+* Fixed problem with hanging Xdvi from redhat 7.x. See also
+http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=52089
+
+* Bugfix: don't crash if kpse_find_file returns 0.
+
+* Bugfix: don't allocate \outputscale for every file.
+
+* Bugfix: mixing different rhythms on one staff doesn't muck up the
+spacing that much.
+
+1.5.7.hjj2
+==========
+
+* Add PS-compilation, PS-viewing and MIDI-play in LilyPond
+-Emacs-mode.  (Heikki Johannes Junes).
+
+* Add common finnish names for notes
+
+
+1.5.6.jcn2
+=========
+* Use Cygwin included Python; drop Windows Python and workarounds.
+
+* Include make/lilypond.mandrake.spec (unchecked!) and README.mandrake.
+
+* Comment out two non existing examples in regression test, add one
+missing from 1.5.5 distribution.
+
+* Revert silly grace-with-braces stuff in tutorial.
+
+* Add short crescendo bug to input/bugs.
+
+* Update and bit more verbose download instructions in INSTALL, 
+fix some links on ftp.lilypond.org.
+
+
+1.5.6.hwn1
+==========
+
+* Grace note bugfixes.
+
+* Move staff-adjacency detection (for the spacing engine) to
+Separating_group_spanner.
+
+* Loose column support: clef changes, key changes may be folded underneath
+notes in a different staff. See input/regression/spacing-folded-clef.ly.
+Changes were made to
+
+  - Separating_group_spanner: decide which columns are loose
+
+  - Simple_spacer, New_spacing_spanner: only look at non-loose columns.
+
+  - Line_of_score: set horizontal positions for loose columns.
+1.5.6
+=====
+
+1.4.6.mb1
+=========
+
+* Allow for duplicated articulation scripts with different direction.
+
+* Added new ornaments: \upmordent, \downmordent, \pralldown, \prallup,
+  \lineprall, \thumb, \comma (to be used with scriptHorizontal = ##t),
+  see also input/test/trill.ly. [WARNING: FONT UPDATE!]
+
+* Bug fix: staccato dot placement.
+
+1.5.5.jr1
+=========
+
+* recent ancient-font.ly development branches manually merged and
+  updated;
+
+* added enhanced mensural minima/fusa noteheads (30 degrees rhomb
+  style); the former 45 degrees quadratic shapes are now available
+  under notehead style "neo_mensural"; [WARNING: FONT UPDATE] 
+
+* minor ancient font corrections (in particular, enhanced set_char_box()
+  arguments).
+
+
+1.5.5.jcn2
+==========
+
+* input/bugs:
+  - Autogenerate bugs document from all .ly's.
+  - Add texidoc to lots of examples.
+  - Junk or move fixed examples to regression test.
+  - Move examples that crash lilypond to input/no-notation.
+  - Update examples.
+
+1.5.5.hwn1
+==========
+
+* Grace property fixes.
+
+* More grace nesting bugfixes.
+
+1.5.5
+=====
+
+1.5.4.jcn2
+==========
+
+* Spelling fixes, notably staffs->staves, except for ChangeLogs.
+
+* Removed `Default' from accidental comment names.
+
+* Compile fixes.
+
+* Fixed off by one error for point and click.
+
+* Website fixes, found bug in grace note stem lengths.
+
+1.5.4.hwn1
+==========
+
+* Ancient font update [WARNING FONTS CHANGED!] (Juergen Reuter)
+
+* New_spacing_spanner: revised spacing generation.
+
+* Default neutral direction set to down. 
+
+* Junk hash table  from flowerlib
+
+* Bugfix: grace nesting error
+
+* Bugfix: don't try schedule next bar when were on a grace moment.
+
+* Bugfix: set measurePosition especially for music starting with
+grace.
+
+1.5.3.hwn1
+==========
+
+* midi2ly bugfixes: don't print ';' in .ly output.
+
+* small cleanup of input/bugs/
+
+* bugfix: nested grace notes; added input/regression/grace-nest.ly
+
+* Bugfix: add double alterations to keyAccidentalOrder (Mats)
+
+* Fixes for PostScript beams and stems.
+
+1.5.2.hwn1
+==========
+
+* Starting pagenumber (Mark Hindley)
+
+* Ancient font patch (Juergen Reuter) [WARNING: FONT UPDATE!]
+
+* Bugfix: don't  put grace beams on non grace notes, and vice versa.
+
+* etf2ly:
+  - miserable try at importing repeatbars and volta brackets;
+  - import articulation defs (IX tag)
+  - revamped file reading logic. Now much cleaner.
+
+* Experimental regular-spacing support: try to space regular runs of
+notes equidistantly.
+
+1.5.2.jcn2
+==========
+
+* Flex is fixed in Debian/unstable.  Update documentation accordingly.
+
+* Guile 1.3.4 compile fix.
+
+* Add trill line type, see input/test/trill.ly.
+
+* Dvips bugs workarounds:
+  - Draw filledbox in tex for now.  Test ps code using
+
+     lilypond -e '(define ps-testing 1)'
+
+  - Extend stems only half way into beam.
+
+* Change order of includes in tex/lilyponddefs.tex so that feta font
+can be used a little easier, like:
+
+    title="TeX \fetachar\fetasharp"
+
+* Update stepmake/bin config.sub, config.guess.
+
+1.5.2
+=====
+
+1.5.1.hwn1
+==========
+
+* small bugfixes for grace-init.ly
+
+* Bugfix: don't mess up spacing when combining different tuplets.
+
+* Small bugfixes for lilypond-mode.el.
+
+* property-init.ly: bugfix for dot directions in polyphonic music.
+
+1.5.1.jcn3
+==========
+
+* Bugfix: text2html: escape entities inside <pre>.
+
+* Added some template .ly's for evaluation.
+
+* Make blot work without -fps too.
+
+* Use blot diameter for postscript beams and boxes.
+
+* Guile-1.5.0-cvs updates and Guile-1.4.x compatibility.
+
+* Beam knee fix.
+
+* Now really included lexer-gcc-3.0.patch.
+
+* Make Voice context accept Thread again; this fixes MIDI output for music
+that uses Thread contexts.
+
+* Removed debug printing from chord-name.scm.
+
+1.5.0
+=====
+1.5.0.jcn1
+==========
+
+* Added feature to ly2dvi to find feta pfa font files used in a
+postscript file to make printing of direct postscript a bit easier:
+
+    lilypond -fps input/trip.ly
+    cat $(ly2dvi -f trip.ps) trip.ps | lpr
+
+* Reincluded 1.4.3.jcn2.
+
+* Website fixes.
+
+* Ly2dvi now leaves .tex and .latex output if latex fails, and cleans
+the temp dir if anything fails.
+
+* Fixes for windows scripts.
+
+1.5.0.uu1
+=========
+
+* Hara kiri and span-bar.
+
+* Junk old grace stuff.
+
+* Don't crash on grace notes in MIDI output.
+
+
+
+1.5.0
+=====
+
+* 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.jcn3
+==========
+  
+TODO: look at other filledbox'es (stafflines and barlines don't match up).
+
+* Testing code off by default.  On: -e "(define ps-testing 1)" -fps
+
+* Output via TeX/dvips still gives problems.  Use direct postscript
+output for real testing.
+
+* 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.
+
diff --git a/Documentation/misc/ChangeLog-1.5 b/Documentation/misc/ChangeLog-1.5
new file mode 100644 (file)
index 0000000..6c889e0
--- /dev/null
@@ -0,0 +1,4289 @@
+2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: release 1.6.0 
+
+       * make/lilypond.redhat.spec.in: don't dist input/ separately
+       anymore
+
+       * Documentation/user/latex-example.latex: restore from old version
+
+       * Documentation/topdocs/index.tely: remove @settitle
+
+       * Documentation/topdocs/README.texi: small fixes.
+
+       * lily/self-aligment-interface.cc (centered_on_parent): only
+       return center if extents not empty.
+
+       * scm/music-functions.scm (unfold-repeats): typo,  
+
+       * mf/feta-bolletjes.mf: use resolution independent variables.
+
+2002-08-19  janneke  <janneke@blauw.xs4all.nl>;
+
+       * lily/stem.cc (calc_stem_info): Fix [a8 a32].
+
+       * Documentation/index.texi (Top): Templates url fix, small url
+       name changes.
+
+       * regular-spacing-engraver.cc:
+       * scm/grob-property-description.scm: Remove regular-distance-to.
+
+       * input/test/spacing-regular.ly:
+       * lily/regular-spacing-engraver.cc: Remove.
+
+2002-08-18  janneke  <janneke@blauw.xs4all.nl>
+
+       * mensural-ligature.cc: *** empty log message ***
+
+       * tab-note-heads-engraver.cc: * lily/tab-note-heads-engraver.cc:
+       * scm/translator-property-description.scm: Add tablatureFormat.
+
+       * input/test/staff-bracket.ly: Update.
+
+       * regular-spacing-engraver.cc:
+       * lily/regular-spacing-engraver.cc: Add regular-distance-to.
+
+       * ligature-bracket.cc, ligature-engraver.cc, ligature-head.cc,
+       mensural-ligature-engraver.cc, mensural-ligature.cc:
+
+       * lily/mensural-ligature-engraver.cc:
+       * scm/grob-property-description.scm: Add head-width, join-left,
+       primitive.
+
+2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * ambitus.cc, parser.yy:
+       * Documentation/user/introduction.itely: small corrections.
+
+       * lily/parser.yy (property_def): Ugh. Switch off
+       internal-type-checking for autoBeamSettings.
+
+2002-08-18  janneke  <janneke@blauw.xs4all.nl>
+
+       * music.cc (internal_set_mus_property): [!NDEBUG] Remove, use
+       abort instead of assert.
+
+2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/grob-property-description.scm: Remove regular-distance-to.
+
+       * input/test/spacing-regular.ly:
+       * lily/regular-spacing-engraver.cc: Remove.
+       
+2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * input/mutopia/J.S.Bach/wtk1-fugue2.ly: staff switch fixes.
+
+       * Documentation/user/lilypond-book.itely: small cleanups
+
+       * Documentation/user/*.itely: fix overfull hboxes. 
+
+2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/tutorial.itely (A piano excerpt): 
+       * Documentation/user/introduction.itely (Introduction): Typo fix.
+
+       * input/test/header-ifelse.ly: Bugfix: call numbers->string only
+       on first three elements of ly-version list.
+
+       * input/test/trills.ly: Comment out \comma.
+
+       * lily/tab-note-heads-engraver.cc: 
+       * scm/translator-property-description.scm: Add tablatureFormat.
+
+       * input/test/staff-bracket.ly: Update.
+
+       * lily/regular-spacing-engraver.cc: Add regular-distance-to.
+
+       * input/test/orchestscore.ly:  
+       * input/test/part-combine-moments.ly:
+       * input/test/part-combine-staff.ly: markScriptPadding ->
+       RehearsalMark #'padding.
+
+2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * Documentation/user/introduction.itely: small corrections.
+
+       * scm/translator-property-description.scm (tablatureFormat):
+       describe property.
+
+       * lily/parser.yy (property_def): Ugh. Switch off
+       internal-type-checking for autoBeamSettings.
+
+2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/mensural-ligature-engraver.cc:
+       * scm/grob-property-description.scm: Add head-width, join-left,
+       primitive.
+       
+       * lily/mensural-ligature.cc: 
+       * lily/ligature-bracket.cc: 
+       * scm/grob-property-description.scm: 
+
+       * lily/ligature-head.cc: Add ligature-primitive-callback.
+
+       * input/test/beam-control.ly: 
+       * input/test/bar-script-visibility.ly: Update.
+
+       * lily/music.cc (internal_set_mus_property): [!NDEBUG] Remove, use
+       abort instead of assert.
+
+2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/test/ambitus.ly: Comment out ambitus until anal-proof.
+
+       * buildscripts/mf-to-table.py (write_fontlist): change
+       extra-extent-X extra-X-extent.
+
+       * scm/music-property-description.scm (label): Typecheck markup?
+       (was string?).
+
+       * Documentation/user/refman.itely (Tablatures basic): Change
+       TabStaff @lilypond snippets to @example until TabStaff is
+       anal-proof.
+
+2002-08-18  Rune Zedeler <rune@zedeler.dk>
+
+       * mf/feta-klef.mf: (another) white pixels bug in g-clef fixed.
+       
+2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/include/lily-guile.hh (LY_DEFINE_NOARGS): Remove.
+
+       * lily/grob-property.cc (internal_set_grob_property): Revert oops.
+
+       * lily/input.cc (message): 
+       * flower/warn.cc (message): Flush output.
+
+       * po/lilypond.pot: Run make po-replace.
+
+       * Documentation/user/GNUmakefile (LILYPOND_BOOK_FLAGS): be anal
+       with type checks.
+
+       * Documentation/GNUmakefile (LILYPOND_BOOK_FLAGS): 
+       * input/regression/GNUmakefile (LILYPOND_BOOK_FLAGS):
+       * input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): 
+       * Documentation/user/invoking.itexi: 
+       * lily/scm-option.cc:
+       * lily/main.cc: Debugging options: ly-set-option (was:
+       set-lily-option).
+
+       * lily/scm-option.cc (ly_option_usage): New function.
+
+2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/parser.yy (script_abbreviation): accept -_ script.
+
+       * ly/script-init.ly (dashUnderscore): add NOTE-_ == portato (dash
+       and dot)
+
+       * scripts/lilypond-book.py (re_dict): add spaces after command sequences
+       (LatexPaper.find_latex_dims): run latex in nonstopmode
+
+       * input/font-body.ly: remove.
+
+       * input/test/harmonic.ly: new file.
+
+       * lily/side-position-interface.cc (aligned_side): don't add
+       padding again.
+
+2002-08-18  Werner Lemberg  <wl@gnu.org>
+
+       * ly/engraver-init.ly:
+       s/extraverticalExtent/extraVerticalExtent/.
+       
+2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/parser.yy (assignment, Simple_music): Warning message fix.
+       Junk ARRAY_SIZE definition.
+
+       * lily/score-engraver.cc: Uniformise error message.
+
+       * lily/grob-property.cc (internal_set_grob_property,
+       internal_get_grob_property): [!NDEBUG] Remove, use abort instead
+       of assert; we always want this functionality.  Uniformise warning
+       message.
+       
+       * lily/main.cc (main, main_prog): Bugfix: move exit-upon-files
+       back, until after evaluating init_scheme_code.
+
+       * scm/translator-property-description.scm (breakAlignOrder): Doco fix.
+
+       * Documentation/user/lilypond-book.itely: Remove @cindex
+       without argument.
+
+       * Documentation/user/internals.itely: Remove stray comma after
+       @cindex entry.
+
+2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.74 released  
+
+       * lily/break-substitution.cc (fast_fubstitute_grob_list): use
+       realloc()
+
+       * lily/dynamic-engraver.cc (process_music): don't use SCM_UNDEFINED
+
+       * Documentation/user/tutorial.itely: fixes by Graham Percival.
+
+2002-08-17  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/lily-guile.cc (type_check_assignment): if
+       internal-type-checking set, abort if we find an unknown property.
+
+       * input/regression/GNUmakefile,input/test/GNUmakefile: be anal
+       with typechecks
+
+       * lily/beam.cc: add 'knee to interface
+
+       * input/test/*.ly: remove or update files using deprecated
+       properties
+
+       * lily/system.cc (spanner_count): new function
+
+       * lily/break-substitution.cc (fast_fubstitute_grob_list): special
+       function for break substitutions on groblists in spanners. By
+       reordering the elements of the list, we can skip large parts of
+       the list in the break substitution. This brings the complexity of
+       Lily back to more-or-less linear in the length of the score.
+
+       Measured speed increase: 20 % (coriolan, without -O2)
+
+       * lily/parse-scm.cc (parse_handler): don't construct a new strport
+       for every parsing. This saves a lot of garbage on large files that
+       have many # constructs.
+
+       * lily/source-file.cc (init_port): add an SCM port to the
+       sourcefile as well. 
+
+       * lily/include/input-file-results.hh: move from
+       file-results. Rename Input_file_settings to Input_file_results.
+
+       * flower/ : remove simple-file-storage, mapped-file-storage,
+       string-storage. Move source-file, binary-source-file to lily/
+
+       * Documentation/header.html.in: remove FAQ
+
+       * Documentation/index.texi (Top): reorganise
+
+       * Documentation/topdocs/INSTALL.texi (Top): add note about fonts.
+
+       * Documentation/topdocs/FAQ.texi: remove.
+
+       * stepmake/stepmake/documentation-targets.make (footify): must
+       depend on all .html files, otherwise rebuilds are broken due to
+       the time stamps 
+
+       * ly/declarations-init.ly (noBreak): set penalty to 10001 (>
+       10000).
+
+2002-08-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * ly/engraver-init.ly (ChordNamesContext): minimumverticalExtent
+       -> minimumVerticalExtent
+
+2002-08-16  Stephen Peters <portnoy@portnoy.org>
+
+       * scm/pdf.scm, pdftex.scm: pdftex updates
+
+       * scripts/ly2dvi.py: pdflatex support
+       
+2002-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/windows/installing.texi: Include info from Wiki. 
+
+2002-08-16  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/lilypond-book.py (output_dict): Replace
+       \includegraphics{xxx.eps} -> \includegraphics{xxx} to 
+       simplify for pdflatex users (makes no difference to latex users).
+
+2002-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/index.texi: 
+       * Documentation/windows/compiling.texi: 
+       * Documentation/windows/installing.texi: Update to reflect
+       LilyPond's inclusion into Cygwin.
+
+2002-08-15  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/test/phrasing-slur-height.ly: New file.
+
+       * scm/grob-property-description.scm (height-limit, ratio): Add.
+
+       * lily/slur.cc: 
+       * scm/grob-description.scm (Slur, PhrasingSlur): Move height-limit
+       and ratio out of details.
+
+       * lily/scores.cc (Input_file_settings): Initalize global_header_.
+
+       * lily/include/file-results.hh (class Input_file_settings): Add
+       private constructor.
+
+       * cygwin/GNUmakefile: [CYGWIN] Install bug-lilypond-cygwin.  Typo
+       fix.  Add kpsewhich commands (Thanks Mats).
+
+       * cygwin/bug-lilypond-cygwin.sh: New file.
+
+       * stepmake/stepmake/help2man-rules.make: Better way of showing
+       help2man command.
+
+       * Documentation/topdocs/FAQ.texi: Add more possible stale font
+       paths.
+
+       * stepmake/bin/package-diff.py: Prepend ./ to cut-and-pastable
+       commands.
+
+       * Documentation/topdocs/INSTALL.texi: Mention the need to and how
+       to create configure for CVS source trees.  Mention libkpathsea-dev
+       as alternative possible name for tetex-devel (or should that be
+       the other way around?).
+
+2002-08-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/include/file-results.hh (class Input_file_settings):
+       encapsulate file settings in a class, Input_file_settings.
+
+       * lily/scores.cc: new function ly_set_point_and_click_x
+       
+       * Documentation/topdocs/README.texi (Top): add note about xdelta
+
+       * Documentation/topdocs/INSTALL.texi (Top): move kpathsea to problems
+       section.
+       
+2002-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scripts/ly2dvi.py: Remove debug printing.
+
+2002-08-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * scripts/convert-ly.py (FatalConversionError.conv): bug in
+       verticalExtent replacement.
+
+       * VERSION: 1.73 released.
+
+2002-08-14 <jiba@tuxfamily.org>
+
+       * scm/output-lib.scm: Support of hammers and pulls in tablature
+       -- Hammers and pulls are inserted exactly like slurs, and a "H" or
+       a "P" is added over the slur as needed.  
+
+       * ./input/test/tablature-hammer.ly: example of hammer, pull and
+       legato in a tablature.
+
+       * ly/engraver-init.ly: Stem.up-to-staff is now disabled by
+       default, since it appears that most of the published tablatures
+       are not like that.
+
+2002-08-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (brew_molecule): use
+       Staff_symbol_referencer::staff_space for thickness.
+
+2002-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/lilypond.tely: Add dir entries for
+       executables.
+
+       * Documentation/user/converters.itely: 
+       * Documentation/user/invoking.itexi: Fix `invocation' node names,
+       in line with standard dir entries.
+
+       * Documentation/user/convert-ly.itexi
+       * Documentation/user/ly2dvi.itexi: Remove.
+       
+       * scripts/ly2dvi.py: Add pseudo-filter (and stdout output)
+       support.
+
+       * lily/main.c: 
+       * lily/paper-score.cc : 
+       * lily/gourlay-breaking.cc: Write info to stderr.
+
+       * buildscripts/help2man.pl: Update to latest version from Debian.
+       Fixes generation of man pages with perl 5.6.1.
+
+       * GNUmakefile.in: Add python link to build-datadir.  Fixes
+       generation of midi2ly man page.
+
+2002-08-14  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * Documentation/user/{tutorial.itely, introduction.itely}: 
+       Small fixes.
+
+2002-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/beam.cc (least_squares): Add comment.
+
+       * input/regression/beam-center-slope.ly: Update.
+
+       * lily/beam-quanting.cc (score_stem_lengths): Revert oops.
+
+       * input/template/melody-chords.ly: New file.
+
+       * lily/stem.cc (calc_stem_info): Move, document, clean up and fix
+       up-to-stem feature.
+
+       * ly/grace-init.ly (startGraceMusic):
+       * scm/grob-description.scm (beamed-lengths): Subtract half a beam
+       thickness, to fix most ugly beams.  See input/test/stem.ly and
+       baerenreiter-sarabande.ly.
+
+       * input/test/stem.ly:
+       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Play with
+       beamed-lengths.
+
+       * input/test/spacing.ly: Give enough room to test spacing.
+
+       * cygwin/post-lilypond.sh: Fix and update.
+
+       * cygwin/zlily-profile.sh: Remove.
+
+2002-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * GNUmakefile.in (EXTRA_DIST_FILES): Add server.el.patch.
+
+       * scm/grob-property-description.scm
+       (beamed-extreme-minimum-free-lengths): New property, now correctly
+       named.
+
+       * ly/grace-init.ly: New beam property updates.
+
+       * input/les-nereides.ly: Updates.
+
+       * cygwin/README.in: New file.
+
+       * input/sondag-morgen/GNUmakefile: 
+       * input/mutopia/R.Schumann/GNUmakefile: New file.
+
+       * scm/grob-property-description.scm (beamed-minimum-free-lengths):
+       (beamed-extreme-free-lengths): New property.
+
+       * lily/beam.cc (forced_stem_count): Count boundary cases too.
+       (set_stem_shorten): Integer divide bug fix.
+
+       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Really expect
+       six systems, change warning into error.
+
+       * scm/grob-description.scm (beamed-stem-shorten): Shorten 8th
+       beams same as normal stem (one staffspace), high order beams less
+       (arbitrary guess).
+       (beamed-lengths): Standard length for all beams.
+       (beamed-minimum-free-lengths):
+       (beamed-extreme-minimum-free-lengths): New property.
+
+       * input/regression/beam-default-lengths.ly: 
+       * input/regression/beam-shortened-lengths.ly: New file.
+
+       * lily/stem.cc (get_stem_info): New function.
+       (calc_stem_info): Partial rewrite.
+
+       * scm/grob-description.scm (Beam): same beamed-stem-shorten for
+       all beam counts.
+
+2002-08-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.72 released
+
+       * input/sondag-morgen/GNUmakefile (examples): add file
+
+       * input/mutopia/R.Schumann/GNUmakefile (examples): add file
+       
+       * lily/lily-guile.cc (to_dir): return CENTER if not a direction.
+
+       * lily/include/grob.hh: remove remove_grob_property()
+
+       * lily/stem-engraver.cc (stop_translation_timestep): remove
+       dir-forced grob property
+
+       * Documentation/user/refman.itely (Grace notes): explain grace
+       after main note.
+
+       * input/test/ : small convert-ly mishaps.
+
+       * Documentation/user/preface.itely: small bits 
+
+       * Documentation/user/introduction.itely: add sectioning
+
+2002-08-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/stem.cc (get_default_stem_end_position): use beam_count - 1
+       as index; this fixes too short forced stem directions.
+       (calc_stem_info): various minute bugfixes.  
+
+       * lily/gourlay-breaking.cc (combine_demerits): set uniform
+       tightness constraint back to one. This fixes Baerenreiter
+       sarabande layout.
+
+       * input: some fixes. Add \version to all files.
+       
+       * lily/stem.cc (calc_stem_info): Use get_direction_beam_count.
+
+       * lily/beam.cc (get_direction_beam_count): New function.
+
+       * GNUmakefile.in: Fix config.h dependency.
+
+       * input/test/beam-dir-function.ly: Fix for new default
+       neutral-direction = -1 (down).
+
+       * input/regression/tuplet-properties.ly:
+       * input/regression/tuplet-nest.ly: Fix.
+
+       * lilypond-font-lock.el (LilyPond-font-lock-keywords):
+       * input/test/improv.ly:
+       * input/test/cautionaries.ly: Accidentals -> Accidental.
+
+       * input/test/add-text-script.ly: Bugfix.  How did this ever work?
+
+       * Documentation/windows/installing.texi: 
+       * Documentation/windows/compiling.texi:
+       * cygwin/README: Update to reflect new binary release setup and
+       build instructions.
+
+2002-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * server.el.patch: Update.
+
+2002-08-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * stepmake/stepmake/metafont-rules.make: pktrace -> mftrace name
+       change.
+       * configure.in: idem
+
+2002-08-10  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * mf/parmesan-timesig.mf, scm/output-lib.scm,
+       lily/include/time-signature.hh, lily/time-signature.cc,
+       input/test/time.ly: fixed broken time-signature by setting grob
+       property font-family automatically.
+
+2002-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/tutorial.itely (Running LilyPond): Mention
+       xdvi and XFree86 option for Windows users.
+
+       * Documentation/user/invoking.itexi: Add ly2dvi's -p alias.
+
+       * scripts/ly2dvi.py: Bugfix for `ly2dvi -I ./foo foo.ly'.  Also
+       append directory of first file to search path, allowing
+       `ly2dvi foo/foo.ly' when foo.ly includes other files from
+       directory foo.  Add short option alias '-p' for --pdf.
+
+       * input/test/trills.ly: 
+       * input/test/preset-extent.ly: 
+       * scm/grob-property-description.scm: more extent renaming.
+
+2002-08-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/parse-scm.cc (protected_ly_parse_scm): compatibility with
+       CVS GUILE 
+
+       * input/test/preset-extent.ly (texidoc): added file.
+
+       * scripts/convert-ly.py: add extent rule.
+
+       * lily/grob.cc: change extent-[XY] to [XY]-extent globally.
+
+2002-08-09  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/main.cc (main): Remove stale #ifdef for windows.
+
+       * stepmake/stepmake/python-module-rules.make: 
+       * stepmake/stepmake/python-module-vars.make: 
+       * stepmake/stepmake/shared-library-vars.make: Add Cygwin support.
+
+       * stepmake/stepmake/generic-vars.make:
+       * cygwin/GNUmakefile: Fix Cygwin build detection.
+       
+       * stepmake/stepmake/shared-library-rules.make: Remove version juggling.
+
+       * stepmake/stepmake/shared-library-targets.make: Default target
+       includes version, add target libFOO.
+
+       * lily/main.cc: Temporary fix for access to scm_read_opts array
+       from shared Cygwin library.
+
+2002-08-08  Rune Zedeler <rune@zedeler.dk>
+       
+       * ly/property-init.ly: Added phrasingSlurUp, phrasingSlurDown and
+       phrasingSlurBoth.
+
+       * input/mutopia/R.Schumann/romanze-op28-2.ly: Added.
+
+       * input/sondag-morgen/*: renamed files from input/SondagMorgen/*
+       
+2002-08-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (struct Int_set): typo.
+
+       * mf/feta-beugel.mf (code): braces should start at 0, not 1.
+
+       * lily/include/lily-guile.hh (scm_int2num): guile 1.4 compatibility. 
+
+       * scm/grob-description.scm (all-grob-descriptions): set
+       X-offset-callbacks for TextScript
+
+       * lily/stem.cc (invisible_b): don't use support_head(), since it
+       sets stem direction.
+
+       * lily/beam.cc (struct Int_set): don't get stuck inserting
+       interval segments of length 0.0.
+
+       * scripts/convert-ly.py:  break-align conversion.
+
+2002-08-06  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/*.cc (process_music): gh_int2scm -> scm_int2num
+
+2002-08-06  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el: Also "C-xC-s" sets default command to LilyPond.
+
+2002-08-05  Rune Zedeler <rune@zedeler.dk>
+
+       * mf/feta-eindelijk.mf: Fix silly typo in 16th and shorter rests.
+
+2002-08-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * stepmake/bin/make-version.py: robustify.
+
+       * input/test/rhythm-excercise.ly: new file
+
+       * input/test/blank-notes.ly: new file
+
+       * lily/note-head.cc (head_extent): robustness fix.
+       
+       * Documentation/user/preface.itely: add some more.
+
+2002-08-04  Rune Zedeler <rune@zedeler.dk>
+
+       * Documentation/user/refman.itely
+       * Documentation/user/internals.itely: Documented "Current" property.
+       
+2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/lily-guile.cc: change gh_str02scm to scm_makfrom0str.
+
+2002-08-04  Werner Lemberg  <wl@gnu.org>
+
+       * tex/lilyponddefs.tex: s/filllastpage/lastpagefill/.
+       
+       * Documentation/user/refman.itely: Document it.
+
+2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/main.cc (sane_putenv): Oops.  Should supply a private copy
+       to putenv. (this was actually caught by valgrind, but I didn't
+       think the error was mine... )
+
+2002-08-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * tex/lilyponddefs.tex: add filllastpage support.
+
+       * GNUmakefile.in: barf if config.h is older than configure. 
+
+       * VERSION: released 1.5.71 
+       
+       * lily/beam.cc (consider_auto_knees): rewrite function; now only
+       consider horizontal knees. Fixes input/bugs/bizzarre-beam.ly
+
+       * lily/syllable-group.cc (set_lyric_align): fix centering on note
+       head for `normal' lyrics. This fixes input/bugs/lyrics-spacing.ly.
+
+2002-08-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (connect_beams): fix quarter note beams.
+
+       * input/regression/beam-quarter.ly: new file.
+
+2002-08-02  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * buildscripts/mf-to-table.py (postfixes): Reduce the line spacing
+       in the font list.
+
+2002-08-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/scm-option.cc: excorcise iostream.
+
+       * lily/main.cc: remove iostream usage.
+
+2002-08-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scripts/lilypond-book.py: make URL for printfilename option.
+
+       * lily/beam.cc (position_with_maximal_common_beams): fix kneed
+       beamlets. This fixes input/bugs/knee
+
+       * ly/engraver-init.ly (HaraKiriStaffContext): switch off auto knee
+       for hara kiri staffs.
+
+       * lily/slur-engraver.cc (try_music): remove nested slur
+       functionality. This fixes spurious warnings with the partcombiner.
+
+2002-08-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/parse-scm.cc (protected_ly_parse_scm): guile 1.4 compatibility.
+
+2002-08-01 Rune Zedeler <rune@zedeler.dk>
+
+       * lily/tab-note-heads-engraver.cc: add algorithm for automatically
+       selecting frets when none given by user. Read property
+       "minimumFret".
+
+       * scm/translator-property-description.scm: Add "minimumFret"
+       
+       * mf/feta-eindelijk.mf: Changed layout of 16th and shorter rests
+       to match the 8th rest. slanted 8th rest a bit more.
+       WARNING: 8th rest and classical quarter rest exchanged.
+       
+2002-08-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scm/grob-description.scm (RehearsalMark): Add baseline-skip to
+       handle multiline marks correctly.
+
+2002-07-31  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Fix dvips flags
+
+2002-07-31 Rune Zedeler <rune@zedeler.dk>
+
+       * input/SondagMorgen/*.ly: Added. TODO: Lots of cleanups but now
+       it's there.
+
+2002-07-31  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/parser.yy (chord_notes): typo. 
+
+       * scm/music-functions.scm (unfold-repeats): bugfix
+
+2002-07-31  Rune Zedeler <rune@zedeler.dk>
+
+       * ly/engraver-init.ly: remove alias "Current" from all contexts.
+
+       * lily/translator-group (find_existing_translator): If
+       n=="Current", return this context.
+       
+       * lily/rest.cc:
+       * lily/time-signature.cc: spacing for even number of staff lines.
+       
+2002-07-31  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/bugs/: remove various files.
+
+       * Documentation/user/refman.itely: doco updates.
+
+       * scripts/ly2dvi.py (find_pfa_fonts): add and document --pdf
+       option.
+
+2002-07-30  Rune Zedeler <rune@zedeler.dk>
+
+       * ly/engraver-init.ly: add alias "Current" to all contexts.
+
+       * ly/property-init.ly: Use "Current" context in the accidental
+       macros. TODO: Do the same in some of the other macros?
+       
+       * scm/output-lib.scm (tablature-stem-attachment-function): add
+       duration argument. Now the function can be called again :-)
+
+2002-07-30  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/parse-scm.cc (parse_handler): add better error message,
+       return a sensible number of nchars
+
+2002-07-29  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/parse-scm.cc (protected_ly_parse_scm): catch GUILE errors
+       when parsing, and emit useful warning message.
+
+       * lily/lily-guile.cc (ly_parse_scm): add line/col/file locations
+       to SCM port for parser.
+
+2002-07-28  Rune Zedeler <rune@zedeler.dk>
+       
+       * lily/note-spacing.cc (stem_dir_correction) Add property
+       knee_spacing_correction controlling the amount of optical spacing
+       added to knees.
+       
+2002-07-28  Glen Prideaux  <gprideau@odyssey.apana.org.au>
+       
+       * lily/syllable-group.cc (set_lyric_align): Only fiddle with
+       alignment if a note has more than a single lyric so single stanza
+       songs are aligned correctly.
+
+2002-07-28  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/test/broken-spanner-adjustment.ly: new file.
+
+2002-07-27  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/lilypond-book.py: Handle printfilename also together
+       with {small,}verbatim
+
+2002-07-27  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * scm/output-lib.scm, lily/note-head.cc: fixed broken baroque
+       note-head style by setting grob property font-family
+       automatically.
+
+2002-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * VERSION: 1.5.70 released.
+       
+       * Documentation/user/lilypond-book.itely (Insert music snippets
+       into your texts using lilypond-book): Briefly mention HTML
+       documents.  Started rewrite, but lost inspiration.
+
+       * lily/grob-scheme.cc (get_original, get_system, get_broken_into):
+       Move scheme funcs from grob.cc and spanner.cc.
+
+       * lily, flower: Ran buildscripts/ontgaar.py.  See also
+       http://lilypond.org/wiki/?CodingStandards.
+       
+       * Documentation/GNUmakefile: Remove regression-test stuff.
+       (deep-WWW-clean): Remove wiki-dump.  Fixes web-clean target.
+
+       * Documentation/regression-test.tely: Remove.
+
+       * Documentation/user/refman.itely (Text scripts): Comment out ref
+       to PostScript output.
+
+       * lily/beam.cc (knee_b): Fix to also work if some dirs are not
+       set.
+
+       * lily/beam.cc (set_stem_directions): For knees, set stems to
+       their natural direction.
+
+2002-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/stem.cc (calc_stem_info): Don't force stems of kneed beams
+       to reach middle staff line.
+
+       * lily/beam.cc (consider_auto_knees): Recalculate beam position
+       after deciding for a knee.
+
+2002-07-26  Han-Wen  <hanwen@cs.uu.nl>
+
+       * Documentation/user/internals.itely: move output-formats doco to
+       WikiWiki.
+       
+2002-07-25  Han-Wen  <hanwen@cs.uu.nl>
+       
+       * po/fr.po: update from TP
+
+       * input/template/GNUmakefile (TITLE): add lysdoc target for the
+       templates
+
+       * Documentation/user/introduction.itely (Introduction): finish
+       introduction 
+
+2002-07-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/include/music-iterator.hh (class Music_iterator): change
+       get_music() to get_pending_events().
+
+2002-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * buildscripts/ontgaar.py: get_music () -> get_pending_events ().
+       
+       * buildscripts/ontgaar.py: New file.
+
+       * scm/grob-property-description.scm (conditional-elements): Add
+       extent-X.
+
+       * lily/grob.cc: Add extent-X and extent-Y to interface.
+
+       * lily/grob-scheme.cc (ly_get_parent): Don't dereference null
+       parent. (Han-Wen)
+
+       * input/test/move-accidentals.ly: New file. (Han-Wen)
+
+2002-07-25  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/grob-scheme.cc (ly_get_parent): don't crash if no parent.
+
+       * lily/slur.cc (get_first_notecolumn_y): robustness: don't crash
+       if no note-columns.
+
+       * server.el.patch: new file.
+
+       * Documentation/user/refman.itely (Point and click):  updates.
+       (Graphical interfaces): add node
+       (Vertical spacing): add node
+
+2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily, lily/include: Rename line to system.  Junk _l suffix.
+
+2002-07-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * po/fr.po: update from TP.
+
+       * buildscripts/lilypond-profile.sh: update support for
+       LILYPONDPREFIX
+
+2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/refman.itely (Point and click): Add info
+       about GVim, NEdit.
+
+2002-07-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/accidental-placement.cc (extent_callback): remove function
+       (position_accidentals): do nothing if not live.
+       Use accidental-grobs property i.s.o. accidentals, to maintain
+       proper typing. 
+
+2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: *
+       input/test/count-systems.ly: Update to new system-count function
+       names.
+
+       * lily/grob.cc (get_line, get_original): Use LY_DEFINE.
+
+       * lily/spanner.cc (get_broken_into): Use LY_DEFINE.
+
+       * lily/include/spanner.hh:
+       * lily/include/grob.hh: Remove DECLARE_SCHEME_CALLBACKs.
+
+       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Add
+       forcedBreak options and fix measure count comments.
+
+       * GNUmakefile.in: Junk intl.
+
+       * config.make.in (prefix): Prepend $(DESTDIR) to allow install
+       without overriding prefix.
+
+       * aclocal.m4: Regenerate.
+       
+       * stepmake/aclocal.m4: Don't expand $prefix: fixes install with
+       other $prefix.
+
+       * cygwin/GNUmakefile: 
+       * ly/GNUmakefile: 
+       * python/GNUmakefile: 
+       * make/GNUmakefile: 
+       * mf/GNUmakefile: 
+       * scm/GNUmakefile:
+       * tex/GNUmakefile: use local_package_datadir iso datadir.
+
+       * make/substitute.make (ATVARIABLES): Add local_lilypond_datadir.
+
+       * aclocal.m4: Regenerate.
+       
+       * config.hh.in:
+       * config.make.in:
+       * stepmake/aclocal.m4: Cleanups and more conventional naming for
+       datadir ($prefix/share), package_datadir ($prefix/$package), and
+       local_package_datadir ($prefix/$package/$version).
+       
+       * make/lilypond-vars.make:
+       * scripts/ly2dvi.py:
+       * scripts/lilypond-book.py:
+       * scripts/mup2ly.py:
+       * scripts/midi2ly.py: use local_package_datadir iso datadir.
+       
+       * GNUmakefile.in: build_datadir without version.
+       
+       * lily/main.cc: Datadir cleanup.
+
+       * lily/text-item.cc (lookup_text): 
+       * lily/music-output-def.cc (print_smob): 
+       * lily/mensural-ligature.cc (brew_molecule):
+       * lily/beam-quanting.cc (score_slopes_dy, score_forbidden_quants):
+       Fix warnings.
+       
+2002-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Warn when not
+       using 6 systems, like the original.
+
+       * input/test/count-systems.ly: New file.
+
+       * lily/spanner.cc (get_broken_into):
+       * lily/grob.cc (original_scm, line_scm): New function.
+
+       * lily/include/grob.hh (ly_scm2grob_array): Moved from
+       group-interface.hh and renamed.
+       (ly_grob_array2scm): New function.
+
+2002-07-23  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * lily/ambitus-engraver.cc: bugfix: create ambitus grob during
+       process_music phase
+
+2002-07-23  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/separation-item.cc (width): cache extent in extent-X
+
+       * lily/spacing-spanner.cc (standard_breakable_column_spacing):
+       only add extent for non-musical column.
+
+       * lily/accidental-placement.cc (split_accidentals): new function
+       (get_relevant_accidental_extent): new function
+
+       * lily/staff-spacing.cc (next_note_correction): idem
+
+       * lily/separating-group-spanner.cc (find_rods): use
+       conditional_width().
+       
+       * scm/sketch.scm: fix roundfilledbox definition
+
+       * lily/lily-guile.cc (robust_list_ref): be sensible with negative
+       argument. This fixes too-long stems on half and quarter notes.
+
+2002-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/index.texi: Add, fix, change some links and names,
+       including dump of wiki wiki.
+
+       * Documentation/GNUmakefile (local-WWW): Slurp wiki.
+
+       * buildscripts/wiki-slurp.py: New file.  Accept multiple pattern.
+       (unwiki): Replace local urls with <img src> too.
+
+       * Documentation/GNUmakefile (wiki-dump): New target.
+
+       * Documentation/header.html.in: Link to Documentation/index
+       renamed to Index (was other...).
+
+       * Documentation/regression-test.tely: Remove.
+
+       * make/lysdoc-targets.make (local-WWW): Add default targets .ps.gz
+       and .pdf.
+
+2002-07-22  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.69 released
+       
+       * lily/accidental-placement.cc (position_accidentals): document
+       two bugcases.
+
+       * lily/skyline.cc (skyline_meshing_distance): bugfixes.
+
+2002-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/regression/abe.ly: 
+       * input/test/transposing.ly: Remove mention of mudela.
+
+       * scripts/lilypond-book.py (make_pixmap): Don't use quiet_system,
+       ie, don't redirect PNG output to /dev/null.  Fixes lys-to-tely
+       documents.
+
+       * input/test/mark.ly: 
+       * Documentation/user/refman.itely: Re-enable \mark #'() example.
+
+       * lily/parser.yy: Revert to MARK scalar.
+
+2002-07-21  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/accidental.cc (accurate_boxes): add function to represent
+       flat with 2 boxes. Improves flat-flat accidental spacing. 
+
+       * lily/accidental-placement.cc (stagger_apes): try to arrange accs
+       in a C form, with the top accidental closet to the chord.
+
+       * lily/stem.cc (get_default_stem_end_position): don't crash if
+       lengths not set.
+       (get_default_stem_end_position): idem for stem-shorten.
+
+       * mf/feta-toevallig.mf: enlarge flat bbox.
+
+       * input/regression/lyrics-extender.ly: new file.
+
+       * lily/lyric-extender.cc (brew_molecule): don't add
+       right-trim-amount if extender is broken.
+
+       * scripts/ly2dvi.py (global_latex_preamble): bugfix (thanks Werner).
+
+2002-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/index.texi: Add pointers to new regression and
+       test documents.
+
+       * Documentation/user/converters.itely:
+       Documentation/user/invoking.itexi: Some small fixes for uniform
+       usage example.
+
+       * input/allfontsize.ly, size*.ly: New files, moved from
+       input/regression.
+       
+       * input/font20.ly, font-body.ly: New files, moved from input/test.
+       
+       * input/font*.ly: New files, moved from input/test.
+
+       * input/test/*.ly: Remove empty files, fix broken ones.
+
+       * input/test/different-time-signatures.ly: Add FIXME marker;
+       comment-out broken code.
+
+       * Documentation/regression-test.tely: Comment-out, add
+       obsolete-marker and url to regression-test-dir.
+
+       * input/test/GNUmakefile: 
+       * input/regression/GNUmakefile: Add rule for lys-to-tely.py.
+
+       * input/regression/+.ly:
+       * input/test/+.ly: New file.
+
+       * input/test/cue-notes.ly: better example
+
+       * Documentation/user/refman.itely (Font selection): font size doco
+
+       * input/mutopia/F.Schubert/standchen.ly: note bugfix
+
+       * lily/stem.cc: rewrite of scoring to give sane results on knee
+       beams.
+
+       * lily/beam.cc (set_stem_lengths): extend stems for gapped tremolo
+       beams.
+       (connect_beams): chop off beaming outside the beam. Fixes problem
+       with tremolo beams.
+
+       * lily/score-engraver.cc (initialize): error if feta20.afm
+
+2002-07-19  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scm/engraver-documentation-lib.scm
+       (document-property-operation): add properties to context
+       documentation.
+
+       * scm/documentation-lib.scm (pad-string-to): align info menus.
+
+2002-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * debian/GNUmakefile: Remove lilypond.links.
+       
+       * debian/: Debian patch (Anthony Fok).
+       
+       * debian/lilypond.links: Remove, as per Anthony's request.
+
+       * aclocal.m4: Regenerate.
+       
+       * stepmake/aclocal.m4: Add --with-kpathsea-include,
+       --with-kpathsea-lib options.
+
+       * scripts/mup2ly.py: Cut-n-paste include missing lilylib.
+
+       * stepmake/stepmake/compile-vars.make: 
+       * stepmake/stepmake/executable-rules.make: 
+       * stepmake/stepmake/python-module-rules.make:
+       * stepmake/stepmake/shared-library-rules.make: Use ALL_LDFLAGS, to
+       guard agains user override of LDFLAGS.
+
+       * Documentation/user/refman.itely: Compile fix for \mark #'(music ...).
+
+       * Documentation/user/internals.itely: Use ly-set-mus-property!.
+
+       * cygwin/mknetrel: New file.
+
+       * cygwin: New directory.  Moved Cygwin stuff from
+       Documentation/windows.
+       
+       * Documentation/windows/fix-suffixes.sh:
+       * buildscripts/walk.sh: Junk.
+
+       * aclocal.m4: Regenerate.
+
+       * buildscripts/walk.sh: Remove.
+
+       * stepmake/stepmake/topdocs-targets.make: 
+       * stepmake/stepmake/help2man-rules.make: 
+       * stepmake/stepmake/generic-vars.make: 
+       * stepmake/make/stepmake.make: 
+       * Documentation/user/GNUmakefile: 
+       * make/stepmake.make: 
+       * make/lilypond-vars.make: 
+       * GNUmakefile.in: 
+       * stepmake/aclocal.m4: Remove builddir cruftyness.
+       
+       * stepmake/stepmake/c++-rules.make: Use ALL_CXXFLAGS, to guard
+       agains user override of CXXFLAGS.
+       
+       * stepmake/stepmake/c++-vars.make (ALL_CXXFLAGS): Include CXXFLAGS.
+       
+       * stepmake/stepmake/c-rules.make: Use ALL_CFLAGS, to guard
+       against user override of CFLAGS.
+       
+       * stepmake/stepmake/c-vars.make (ALL_CFLAGS): Include CFLAGS.
+
+2002-07-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * GNUmakefile.in: distribute lexer-gcc-3.1.sh  as well
+       
+       * lily/music.cc (LY_DEFINE): change ly-set-mus-property to
+       ly-set-mus-property!
+
+       * lily/grob.cc (LY_DEFINE): change ly-set-grob-property to ly-set-grob-property!
+
+       * lily/parser.yy (Repeated_music): shift duration log for tremolo
+       repeats, instead of klutzing around.
+
+       * lily/chord-tremolo-engraver.cc (acknowledge_grob): set X parent
+       of stem tremolo grobs.
+
+       * scm/music-functions.scm (shift-duration-log): new function, add
+       to duration log of all notes.
+
+       * lily/duration.cc: add compression factor arguments to
+       make-duration.
+       compression-factor, dot-count, duration-log: add scheme functions.
+
+       * lily/mark-engraver.cc (process_music): allow \mark to take a
+       number as argument as well.
+
+2002-07-16  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/rest.cc (after_line_breaking): only translate the whole
+       rest if we have more than 1 staff line
+
+2002-07-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: release 1.5.68
+
+       * scripts/lilypond-book.py: fixes by Tom Cato Amundsen.
+
+2002-07-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/beam-quanting.cc (score_forbidden_quants): split beam
+       quanting functionality.
+       (quanting): argh. Forgot how linear interpolation works. Bugfix.
+
+       * Documentation/index.texi (Top): add whole-big-page documentation.
+
+       * lily/side-position-interface.cc (general_side_position):
+       Subtract parent offset iso. adding it. (Huh? How could this have
+       worked?)
+
+       * lily/clef-engraver.cc (stop_translation_timestep): add staff to
+       OctavateEight support.
+
+       * scripts/lilypond-book.py: add smallverbatim option.
+
+       * lily/beam.cc (quanting): bugfix. Behave sanely when no visible
+       stems.
+
+       * lily/accidental-placement.cc (position_accidentals): add padding
+       property. Increase default setting to 0.2. 
+
+2002-07-15  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/paper-column.cc (before_line_breaking): urg. bugfix.
+
+       * lily/separating-line-group-engraver.cc (finalize): don't replace
+       right-items, but add to list. This fixes a bug when a staff ends
+       with cross-staff voice switching away.
+2002-07-14  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/mutopia/GNUmakefile: move mutopia/ to input/mutopia/
+
+       * lily/beam.cc (quanting): add explicit support for cross-staff
+       beaming: make slope penalty larger.
+
+       * lily/beam.cc: use common refpoints throughout. This fixes many
+       cross staff issues.
+       * lily/paper-column.cc (before_line_breaking): bug fix.
+
+       * lily/volta-engraver.cc (process_music): do something sensible if
+       no staffs found. 
+
+       * scripts/lilypond-book.py (make_pixmap): opps. Do png conversion
+       only once. 
+
+       * Documentation/user/refman.itely (Global layout): made section on
+       global layout, added spacing documentation.
+
+       * lily/staff-symbol.cc (brew_molecule): change ragged right for
+       staff symbols. See comments.
+
+2002-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/voice-devnull-engraver.cc (acknowledge_grob): Use proper
+       spelling for always.  In solo a due mode, kill spanners when the
+       other thread has solo.
+
+       * lily/thread-devnull-engraver.cc (acknowledge_grob): In solo a
+       due mode, kill everything when the other thread has solo.
+
+       * lily/a2-engraver.cc (acknowledge_grob): In solo a due mode, do
+       not set directions when we have solo.
+
+       * lily/part-combine-music-iterator.cc (process): Set property
+       "othersolo" if the other thread has solo.
+
+2002-07-13  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.67 released.
+       
+       * lily/beam.cc (calc_stem_y): fix beams on quarter notes.
+
+       * lily/stem-tremolo.cc (brew_molecule): add code for stem tremolos.
+
+       * lily/auto-beam-engraver.cc (create_beam_p): remember Beam
+       settings at the start of a potential auto beam.
+
+       * lily/include/sequential-iterator.hh (class Sequential_iterator):
+       bugfix: protect music list from GC.
+
+       * Documentation/user/introduction.itely: misc fixes.
+
+       * scripts/ly2dvi.py (run_latex): show latex error log. Ask for
+       bugreport if lilypond is killed by a signal. 
+
+       * input/regression/beam-funky.ly:  new file
+
+       * lily/input-smob.cc (make_input): GUILE 1.7 compatibility fixes.
+
+       * lily/beam.cc: complete rewrite of multiplicity. This fixes 16th
+       knees code.
+       (quanting): add french beaming support (property french-beaming)
+       (stem_beams): removed.
+
+i2002-07-12  Mats Bengtsson  <matsb@s3.kth.se>
+
+       * lily/beam.cc (after_line_breaking): Set correct stem lengths
+       also when beam positions are set manually.
+       (consider_auto_knees): Do not use automatic knees if the directions
+       are set manually by the user.
+
+2002-07-12  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/regression/grace-auto-beam.ly: new file
+
+       * input/regression/grace-unfold-repeat.ly: new file
+
+       * lily/auto-beam-engraver.cc (test_moment): never start on grace moments.
+
+       * lily/forbid-break-engraver.cc (start_translation_timestep): skip
+       grace notes for break-forbidding. Breaks during grace notes are
+       handled by Bar_engraver.        
+
+       * lily/unfolded-repeat-iterator.cc: Reimplement
+       Unfolded_repeat_iterator, Volta_repeat_iterator using
+       Sequential_iterator. All grace functionality from {} carries over
+       to repeats as well.
+
+       * lily/sequential-iterator.cc: new file: form baseclass for
+       sequential music iterator and unfolded/volta repeat iterator.
+
+2002-07-11  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/include/debug.hh: deprecate.
+
+       * lily/spacing-spanner.cc (set_springs): add support for
+       common-shortest-duration field.
+
+       * lily/parser.yy (translator_spec_body): allow \set in \translator
+       {}  block. This is the same as \override, here.
+
+       * lily/score-engraver.cc (one_time_step): don't warn about columns
+       when skipTypesetting == #t.
+
+       * lily/spacing-spanner.cc (musical_column_spacing): change
+       ragged right function to produce natural spacing.
+
+2002-07-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/paper-column.cc (before_line_breaking): update
+       #'bounded-by-me field for suicided items.  This fixes crazy
+       spacing in \partcombine scores.
+
+2002-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * config.hh.in: Add HAVE_SSTREAM.
+       
+       * configure.in: Add check for sstream header.
+
+2002-07-09  Mats Bengtsson  <matsb@s3.kth.se>
+       * flower/source-file.cc: Fix compatibility with older g++.
+2002-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/twinkle.ly: Bugfix: no automaticMelismata.
+
+2002-07-08  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mutopia/J.S.Bach/Cembalo-Partitas/: remove
+
+       * ly/engraver-init.ly (ScoreContext): turn on automaticMelismata
+       by default.
+
+       * lily/voice-devnull-engraver.cc (try_music):
+       lily/thread-devnull-engraver.cc: use proper spelling for #'always.
+
+       * lily/unfolded-repeat-iterator.cc (Unfolded_repeat_iterator):
+       copy here_mom_ too. This fixes an obscure bug with combining
+       partcombine and repeat
+
+       * lily/chord-tremolo-iterator.cc (Chord_tremolo_iterator): copy
+       factor too. 
+
+2002-07-07  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mutopia/J.S.Bach/pa.ly: remove
+       * mutopia/J.S.Bach/Duette/: remove  
+       
+       * scm/font.scm (change-rhs-size): add support for "paper19.ly"
+
+       * VERSION: 1.5.66 released
+
+       * scm/grob-description.scm (all-grob-descriptions): add
+       item-interface where necessary
+
+       * lily/score-engraver.cc (one_time_step): warn for grobs created
+       during stop_translation_timestep().
+
+       * lily/a2-engraver.cc: restrict acknowledged grob types.
+
+       * lily/chord-name-engraver.cc: remove acknowledge_grob().
+
+       * Documentation/user/tutorial.itely: doc carnage.
+
+2002-07-06  Rune Zedeler  <rune@zedeler.dk>
+
+       * Documentation/user/refman.itely: Documented accidentals
+       (incl. bugs), subdivideBeams and drum/percussion notation.
+
+       * lily/translator-group.cc, lily/include/translator-group.hh
+       (Translator_group::set_children_property): removed.
+
+       * lily/accidental-engraver.cc: don't use
+       Translator_group::set_children_property.
+
+       * lily/new-accidental-engraver.cc: Added. More correct
+       accidentals, but wrong spacing.
+
+       * lily/beam-enagraver.cc, lily/auto-beam-engraver.cc: Small
+       subdivideBeams-fixes.
+
+       * scm/drums.scm: Small changes/fixes in instruments and maps
+       
+2002-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lexer-gcc-3.1.sh: Fixes and more comments.
+
+       * Documentation/topdocs/INSTALL.texi: Add comment about gcc-3.0.4
+       problems.
+
+       * lily/include/stream.hh:
+       * lily/include/moment.hh:
+       * lily/include/midi-stream.hh:
+       * lily/streams.cc:
+       * lily/scm-option.cc:
+       * lily/parser.yy:
+       * lily/my-lily-lexer.cc:
+       * lily/moment.cc:
+       * lily/midi-stream.cc:
+       * lily/main.cc:
+       * lily/lexer.ll:
+       * lily/includable-lexer.cc:
+       * flower/include/source-file.hh:
+       * flower/include/parray.hh:
+       * flower/include/dictionary.hh:
+       * flower/include/array.icc:
+       * flower/string.cc: 
+       * flower/source-file.cc:
+       * flower/getopt-long.cc: gcc-3.1 fixes.
+
+       * stepmake/stepmake/generic-targets.make: Add comment about warning.
+
+       * lexer-gcc-3.0.patch: Add comment, and a fix for installations
+       that have an unpatched flex and gcc-3.1.x.
+
+       * Documentation/topdocs/INSTALL.texi: Add comments and
+       instructions on gcc-3.1.x.
+
+       * lexer-gcc-3.1.sh: New file.
+
+       * aclocal.m4: regenerate.
+       
+       * stepmake/aclocal.m4: Version compare fix.
+
+2002-07-05  Han-Wen  <hanwen@cs.uu.nl>
+
+       * ly/engraver-init.ly (RhythmicStaffContext): stems up by default.
+
+       * lily-guile.hh: remove guile 1.3 compatibility,  add 1.4
+       compatibility functions.
+
+2002-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/windows/lilypond.hint (requires): Add libintl2.
+
+2002-07-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.65 released. 
+       
+       * scripts/lilypond-book.py: patches by Tom Cato Amundsen.  Adds
+       support for the columnsep when using the geometry package.
+       
+2002-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/grob-property-description.scm (minimum-space-pair): Remove.
+
+       * Documentation/windows/README: 
+       * Documentation/windows/guile-1.5.6-1.5.6.jcn2.patch:
+       * Documentation/windows/changelog: New file.
+
+       * Documentation/windows/lilypond.hint (requires): libguile14 (was:
+       guile).
+
+2002-07-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/grob-property.cc (HASHING_FOR_MUTABLE_PROPS): experiment:
+       try hash tables for mutable properties.
+
+       * lily/align-interface.cc: remove aligned-interface and props
+       minimum-space-pair extra-space 
+
+       * lily/grob-property.cc: new file move grob prop handling here.
+
+       * lily/lily-guile.cc (ly_deep_copy): add vector support
+
+       * lily/break-substitution.cc (do_break_substitution): add vector
+       support.
+
+       * lily/spanner.cc: remove extend_spanner_over_* funcs.
+
+2002-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/aclocal.m4 (STEPMAKE_GET_VERSION): Workaround for
+       broken Debian gcc version string: 'gcc (GCC) 3.1.1 20020606
+       (Debian prerelease)'
+
+2002-07-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/bar-check-iterator.cc (process): change
+       barbarCheckNoSynchronize to barCheckSynchronize
+
+       * Documentation/user/bugs.itexi: move to introduction, remove.
+
+       * Documentation/user/*.itexi: general carnage/cleanage.
+       
+       * Documentation/user/internals.itely: split most of file into
+       internal documentation (.scm and .cc)
+
+       * buildscripts/make-font-dir.py: put designsize in to X font
+       sWidth field
+
+       * make/lilypond.redhat.spec.in: postinstall bugfix
+
+2002-07-02  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * lily/ambitus-engraver.cc, lily/ambitus.cc: Various bugfixes:
+       avoid segfault on undefined ambitus pitch; avoid wasteful creation
+       of pitch smobs; defer computation of centralCPosition beyond first
+       timestep to catch also clefs outside of the current voice context.
+
+2002-07-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/template/satb.ly: new file
+
+2002-07-01  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/glossary.tely: Precautions for lilypond-book:
+       don't use spaces after @lilypond options.
+
+       * Documentation/topdocs/INSTALL.texi (Top): Remove generic Guile
+       threads warning.
+
+2002-07-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION (MAJOR_VERSION): 1.5.64
+
+2002-06-30  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/grob.cc (mark_smob): don't mark parents, explain why.
+
+       * tex/lilyponddefs.tex: Define outputscale only once.
+
+2002-06-29  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * configure.in: Require guile 1.4 or newer (was 1.3.4?).
+
+2002-06-29  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/(phrasing-)slur-engraver.cc: remove slur{Begin|End}Attachment.
+
+       * lily/separating-line-group-engraver.cc (acknowledge_grob):
+       ignore grobs with no-spacing-rods set.
+
+       * Documentation/user/tutorial.itely (Fine tuning a piece): more tut.
+
+       * scm/grob-description.scm (all-grob-descriptions): sort list
+       
+2002-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/tutorial.itely (A piano excerpt): Bugfix:
+       remove stray brace.
+
+       * Documentation/topdocs/FAQ.texi (Installation): Add
+       lilypond-devel list.  Add faq about font removal.  Fix faq about
+       generating and running ./configure.
+
+2002-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/chord-name.scm (chord::name->text): Workaround: clean markup
+       text.
+
+       * lily/text-item.cc (markup_text2molecule): Bugfix: raise only once.
+
+       * input/test/ambitus.ly:
+       * lily/ambitus-engraver.cc:
+       * lily/ambitus.cc:
+       * lily/include/ambitus.hh: New file.
+
+       * GNUmakefile.in (local-clean): Also remove builddir-setup's symlinks.
+
+2002-06-25  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * input/test/ambitus.ly, lily/ambitus-engraver.cc,
+       lily/ambitus.cc, lily/include/ambitus.hh, ly/engraver-init.ly,
+       scm/basic-properties.scm, scm/grob-description.scm,
+       scm/grob-property-description.scm: Add support for ambitus.
+
+2002-06-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/text-spanner.cc: add some props to interface (patch
+       courtesy Chris J).
+
+2002-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/text-spanner.cc (setup_pedal_bracket): Bugfix: only
+       dereference valid Grob.
+
+       * configure.in: Quoting fixes.
+
+2002-06-24  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.63 released
+
+       * lily/grob-scheme.cc: new file
+
+       * lily/break-substitution.cc: split up break substitution
+       functionality, and make a special constant stack-space version for
+       lists of grobs. This should fix the problems of lily in
+       combination with pthreads/qthreads.
+
+       * lily/grob.cc (mark_smob): bugfix: mark other parent too.
+
+2002-06-23  Chris Jackson  <chris@fluffhouse.org.uk>
+
+       * lily/text-spanner.cc (setup_pedal_bracket):
+       * lily/piano-pedal-engraver.cc (create_bracket_grobs): 
+       Fix the lengths of mixed-style piano pedal brackets.
+
+2002-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/tutorial.itely (First steps): Add missing
+       quotation.
+
+       * Documentation/topdocs/INSTALL.texi (Top): Add some warnings
+       about guile --with-threads.  Hopefully this issue can be resolved
+       rsn, but maybe we should even add warnings for the standard Debian
+       and Red Hat packages?
+
+       * configure.in: Warn if guile is configured to use threads.  Maybe
+       we should make this an error (ie, add to REQUIRED list?)
+
+       * config.make.in (PACKAGE_NAME):
+       (PACKAGE, package):  Don't hardcode.
+
+       * VERSION (PACKAGE_NAME): Typo fix.
+
+2002-06-23  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/tutorial/brahms-*.ly: new tutorial files.
+
+       * Documentation/user/tutorial.itely: fixes. Extend cheat sheet.
+
+       * scm/script.scm (default-script-alist): fermata is up.
+
+       * lily/dynamic-engraver.cc (stop_translation_timestep): stop
+       dynamic line spanner when there is no crescendo to connect.
+
+       * lily/tie.cc (get_control_points): add test to avoid flat ties.
+
+2002-06-22  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/note-collision.cc (check_meshing_chords): don't crash if no
+       stems.
+
+       * scm/music-functions.scm (toplevel-music-functions): new
+       definition. Functions to apply automatically. Removes the need for
+       explicitly doing \apply #voicify-music
+
+       * lily/grob.cc (do_break_substitution): rename function, use
+       global var for criterion argument. Reduces stack usage a little.
+
+       * ly/engraver-init.ly (StaffContext): add Instrument_engraver
+
+       * scripts/convert-ly.py, lily/*.cc, scm/*.scm: change
+       visibility-lambda to break-visibility
+
+2002-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/bugs/part-combiner.ly: New file.
+
+       * lily/include/spacing-interface.hh: New file.
+
+       * lily/include/spaceable-element.hh: Remove.
+
+       * input/test/script-priority.ly: New file.
+
+2002-06-20  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/system.cc (output_lines): kill grobs that are only for spacing.
+
+2002-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/fingering-engraver.cc (make_script): 
+       * lily/script-engraver.cc (process_music): 
+       * lily/text-engraver.cc: 
+       (process_acknowledged_grobs): Remove hard coded script-priority.
+
+       * flower/warn.cc: Cleanup.
+
+       * lily/voice-devnull-engraver.cc: Also eat multi-measure rest, a
+       spanner now.
+
+       * aclocal.m4: Regenerate.
+
+       * stepmake/aclocal.m4: Also set GUILE_PATCH_LEVEL.
+
+       * config.hh.in: Only set GUILE_MAJOR_VERSION if necessary.
+       * lily/include/lily-guile.hh: Only include config.h if necessary.
+
+       * Changelog: cvs changes ml archive test #8.
+       
+       * lily/slur-engraver.cc: Layout fix.
+
+2002-06-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * ly/engraver-init.ly (RhythmicStaffContext): add
+       Dot_column_engraver, resurrect barlines 
+       
+       * VERSION: 1.5.62 released.
+
+       * lily/engraver-group-engraver.cc (do_announces): rename
+       create_grobs () to process_acknowledged_grobs().
+
+       * lily/grob.cc (programming_error): add programming_error with
+       origin location.  
+
+       * lily/tuplet-bracket.cc (parallel_beam): robustness check, don't
+       fail if a beam doesn't have stems.  
+
+       * lily/engraver-group-engraver.cc (do_announces): scary change in
+       calling convention of create_grobs():  no create_grobs() call
+       before acknowledge_grobs().
+
+       * lily/sequential-music-iterator.cc (skip): add support for grace
+       notes. 
+
+       * lily/music.cc (Music): fix very subtle and nasty memory
+       corruption bug. Typical symptom: "programming_error: Rhythmic_req
+       has no duration"
+
+       * mutopia/claop.py: new file: CLA(O)P II by Peter Wallin.
+
+2002-06-19  Han-Wen  <hanwen@cs.uu.nl>
+
+       * ly/engraver-init.ly (RhythmicStaffContext): add
+       Dot_column_engraver
+       
+
+       * lily/parser.yy: various protection fixes. Less objects are now
+       overprotected.
+
+2002-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/bin/release.py (prev_ver): Bugfix: assume new diff
+       naming scheme.
+
+       * Documentation/windows/zlily-profile.sh:
+       * Documentation/windows/post-lilypond.sh: Assume normal
+       prefix=/usr for lilypond.
+
+       * lily/musical-request.cc (length_mom): Display origin with error.
+
+       * input/test/duration-check.ly: New file.
+
+       * lily/lily-guile.cc (ly_pair_p): [PARANOID]: Check for freed
+       cells.
+
+       * lily/part-combine-music-iterator.cc (get_state): Bugfix: use
+       ly_symbol2scm to get a scm symbol (rather than ly_str02scm).
+
+       * aclocal.m4:
+       * autogen.sh: Regenerate.
+       
+       * Documentation/topdocs/INSTALL.texi: 
+       * configure.in: 
+       * stepmake/configure.in:
+       * stepmake/aclocal.m4: Revert autoconf upgrade.  Autoconf 2.53 has
+       a serious bug wrt AC_CONFIG_AUX_DIR (reported).  Creating
+       ./configure once again requires autoconf == 2.13.
+
+       * stepmake/autogen.sh: Check for autoconf == 2.13.
+
+2002-06-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/parser.yy (open_request_parens): add input locations to
+       open and close parens. 
+
+2002-06-17  Chris Jackson <chris@fluffhouse.org.uk>
+
+       * lily/tuplet-bracket.cc:
+       * lily/text-spanner.cc: 
+       * lily/piano-pedal-engraver.cc: 
+       * scm/grob-description.scm: 
+       * scm/grob-property-description.scm: Changed the
+       edge-width property of brackets to edge-widen. Changed the sign of
+       the left element of edge-widen so a pair of equal numbers produces
+       a symmetrical bracket.
+
+2002-06-17  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * ly/espanol.ly: added.
+
+       * lily/simple-spacer.cc (solve): remove assert.
+
+2002-06-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/forbid-break-engraver.cc (class
+       Forbid_line_break_engraver): new engraver: forbid linebreaks
+       during playing notes
+
+       * lily/spacing-spanner.cc (loose_column): add another check: don't
+       move around bar lines as loose columns.
+
+       * scm/basic-properties.scm (default-break-barline):  add pre-break
+       for .| barline
+
+2002-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * GNUmakefile.in (builddir-setup): Bugfix: include srcdir/tex as
+       well as mf/out as subdirs of tex, for kpathsea to find through TEXMF.
+
+       * scripts/lilypond-book.py (environment): Bugfix: update to new
+       TEXMF scheme, from ly2dvi.
+
+       * lily/lookup.cc (slur): Invoke bezier-bow.
+
+       * scm/tex.scm (bezier-bow): 
+       * scm/ps.scm (bezier-bow): Bezier sandwich with rounded endings
+       (Previously named bezier-sandwich).
+       
+       * scm/tex.scm (bezier-sandwich):
+       * scm/ps.scm (bezier-sandwich): Plain bezier sandwich.
+
+       * make/lilypond.mandrake.spec.in (post): 
+       * make/lilypond.suse.spec.in (post): 
+       * make/lilypond.redhat.spec.in (post): Also remove parmesan fonts.
+       
+       * tex/lilyponddefs.tex: Uncomment feta character support.
+
+       * Documentation/user/refman.itely (Pitches): Add espanol.ly
+       description.
+
+       * ly/catalan.ly: Add comment about (spanish) -s suffix.
+
+       * ly/espanol.ly: Spanish note names by Carlos Garc'ia Su'arez
+       <cgscqmp@terra.es>.
+
+2002-06-14  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * GNUmakefile.in (short-examples):
+       (long-examples): Bugfix for --srcdir build.
+       (top-web): Rewrite weblist find command.
+
+       * stepmake/bin/config.sub: 
+       * stepmake/bin/config.guess: Update from latest autotools.
+
+       * aclocal.m4:
+       * autogen.sh: Regenerate.
+       
+       * configure.in: 
+       * stepmake/configure.in: 
+       * stepmake/aclocal.m4: Run autoupdate.  Creating ./configure now
+       requires autoconf >= 2.50.
+
+       * stepmake/autogen.sh: Check for autoconf >= 2.50.
+
+       * Documentation/user/refman.itely: Bugfix for tablature example.
+
+       * Documentation/windows/compiling.texi: Update for new and
+       improved setup.
+
+2002-06-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/spacing-spanner.cc (find_shortest): make 1/8 configurable:
+       introduce base-shortest-duration
+
+       * lily/parser.yy (music_output_def_body): don't crash when \tempo
+       in unexpected \midi{} is found.
+
+2002-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/GNUmakefile.in: Don't install stepmake.  This breaks
+       the use of make/ly.make for use as an external makefile.  Probably
+       noone except for myself ever used this anyway.
+
+       * stepmake/stepmake/GNUmakefile (INSTALLATION_DIR): Bugfix: Adapt
+       to new $datadir convention (<package>/<version>).
+
+2002-06-13  Han-Wen  <hanwen@cs.uu.nl>
+       
+       * VERSION: 1.5.61 released
+       
+       * Document/user/refman.itely: tablature doc and code updates by
+       Jean-Baptiste Lamy <jiba@tuxfamily.org>
+       
+       * input/template/piano-dynamics.ly: bugfixes.
+
+       * lily/key-engraver.cc (try_music): read request only once. Don't
+       overwrite lastKeySignature. Call create_key() only once. This
+       fixes a bug with multiple equal key changes on polyphonic staffs.
+
+2002-06-12  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scm/grob-description.scm: Add side-position-interface to TextSpanner
+
+       * scm/grob-property-description.scm: Document the trill line type.
+
+2002-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/stepmake/generic-vars.make: 
+       * make/lilypond-vars.make:
+       * GNUmakefile.in (builddir-setup): New setup for builddir run.
+       Fixes LilyPond run from builddir for --srcdir builds.
+
+       * Documentation/windows/GNUmakefile (OUT_PROFILES): Bugfix for
+       --srcdir build.
+
+2002-06-12  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scm/grob-description.scm (all-grob-descriptions): add
+       font-family to RehearsalMark
+
+       * scm/drums.scm: move over definitions from drum-pitch-init.ly
+
+       * lily/volta-bracket.cc (brew_molecule): bugfix, don't do anything
+       if glyph not set.
+
+2002-06-12  Heikki Junes  <heikki.junes@hut.fi>
+
+       * lilypond-mode.el: Propose saving before applying a command:
+       for saved buffer set default command to LilyPond.
+
+2002-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * buildscripts/mutopia-index.py (headertext_nopics): Add missing
+       variable.
+
+       * Documentation/windows/lilypond.hint: Renamed (previously setup.hint).
+
+       * Documentation/windows/lilypond-doc.hint: New file.
+
+       * GNUmakefile.in: Forward port: Add toplevel target install-html-doc.
+       Bugfixes for --srcdir html-doc build.
+       
+       * make/lilypond-vars.make (LILYPOND_BOOK_INCLUDES): Forward port:
+       Bugfix: Include $(builddir)/mf/out (was $(srcdir)/mf/out.
+
+2002-06-10  Han-Wen  <hanwen@cs.uu.nl>
+
+       * ly/script-init.ly (pralldown): add some scripts.
+
+       * Documentation/user/refman.itely: many edits.
+
+2002-06-09  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/tuplet-bracket.cc (brew_molecule): don't translate in Y
+       direction, this breaks staffline avoidance of the bracket when
+       they're horizontal.
+
+2002-06-08  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/midi2ly.py: Fix handling of -o
+
+2002-06-08  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/molecule.cc (translate): set max distance to 100 cm.
+
+2002-06-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.60 released
+
+       * lily/beam.cc: tremolo fix.
+
+       * scripts/convert-ly.py:  add tuplet-X-visibility rules.
+       add VerticalExtent -> verticalExtent rules.
+
+       * lily/axis-group-engraver.cc: consistent case for
+       XxxxVerticalExtent properties.  
+
+       * Documentation/user/refman.itely (Tuplets): update
+       tuplet-X-visibility properties. 
+
+       * input/test/defaultbars.ly: Corrected (thanks Mats)
+       
+2002-06-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (shift_region_to_valid): fix stupido bug. 
+
+       * buildscripts/lilypond-profile.sh: override settings if
+       LILYPONDPREFIX is set.
+
+2002-06-04  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/ly2dvi.py (non_path_environment): Fix typo
+
+2002-06-03  Heikki Junes  <heikki.junes@hut.fi>
+
+       * lilypond-mode.el: Extend "Quick notes" containing note tuples.
+
+       * lilypond-font-lock.el: Add fixes and comments to syntax-table.
+
+2002-06-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/beam-engraver.cc (class Grace_beam_engraver): derive from
+       beam-engraver: use different engraver so we can mix normal and
+       grace beams.
+
+2002-06-01  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (shift_region_to_valid): Try to shift positions
+       after slope-damping and concaveness check, so that short-stems are
+       not violated.
+
+2002-05-31  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/aclocal.m4: Fix for ash as /bin/sh.
+
+2002-05-31  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.59 released 
+       
+       * scripts/musedata2ly.py (Parser.parse_note_line): add dots. Add
+       notice that missing features are exercise for user.
+
+2002-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/beam.cc (score_stem_lengths): Bugfix for knees: use correct
+       (but alas, not partly precomputed) value for current_y when
+       calculating stem length demerits.
+       (calc_stem_y): Temporary precomputed factors fix.
+
+       * lily/stem.cc (calc_stem_info): Take multiplicity into account
+       for shortest_y too.
+
+       * input/bugs/melisma-tie-rest.ly: New file.
+
+2002-05-30  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/stem.cc (calc_stem_info): remove min_y member, rename
+       stuff.  Remove kneeing stuff.
+
+       * lily/beam.cc (brew_molecule): remove beam direction. Lots of
+       twiddling
+
+2002-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/sketch.scm: 
+       * scm/ps.scm: 
+       * scm/pdftex.scm: 
+       * scm/pdf.scm: 
+       * scm/tex.scm: Add check for Guile-1.4.1.  Guile includes
+       patch-level of version in minor-version string.  Arg.
+
+2002-05-29  Han-Wen  <hanwen@cs.uu.nl>
+
+       * ly/engraver-init.ly (TabStaffContext): 
+       enable TabStaff by default.
+
+       *  Tablature support by Jean-Baptiste Lamy <jiba@tuxfamily.org>
+
+2002-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * config.hh.in: Remove duplicate DIR_DATADIR entry.
+
+       * aclocal.m4: Regenerate.
+       
+       * stepmake/aclocal.m4: Append $FULL_VERSION to datadir.
+
+2002-05-25  Heikki Junes  <heikki.junes@hut.fi>
+
+       * lilypond-mode.el: Added Deutsch notes and fixed "Quick notes".
+
+       * lilypond-mode.el: Write notes with fewer keystrokes trough a 
+       "Quick notes"-interface.
+
+2002-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/regression/non-empty-text.ly: Update example with outdated
+       comment.
+
+2002-05-25  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scripts/convert-ly.py:  add textNonEmpty rule
+
+       * lily/text-engraver.cc (create_grobs): remove textNonEmpty
+
+2002-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/text-item.cc (markup_text2molecule): Junk ugly lookahead by
+       using translate-robust add_molecule instead of add_at_edge.
+       Bugfix for #(lines (finger "" "1")).
+
+2002-05-24  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/stem-tremolo.cc (brew_molecule): clean up and fix stem
+       tremolo placement.
+
+2002-05-22  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.58
+       
+       * Documentation/user/refman.itely: Bugfix: add node Repeats and
+       MIDI.  Regenerate menu.  Fix @end example.
+
+       * lily/accidental.cc: Add cautionary-style to interface.
+
+       * mf/feta-beugel.mf (code): use autometric macros for braces.
+       This fixes input/bugs/braces.
+
+       * lily/afm.cc (count): return numOfChars, not size of array
+       (always equals 256.)
+
+       * lily/script.cc (before_line_breaking): postpone setting the
+       X-parent of vertical scripts. This fixes the case of scripts on
+       chords with seconds 
+
+2002-05-21  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scm/grob-description.scm:  fix alignment of barnumber: make sure
+       it doesn't hit the G-clef. 
+
+       * input/mozart-hrn3-defs.ly (startGraceMusic): typo (it's
+       startGraceMusic not startGraceContext).
+
+2002-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/autogen.sh: Check for autoconf2.13, and abort if not
+       found.
+
+2002-05-20  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/accidental-engraver.cc: remove old accidental engraver,
+       move new one to accidental-engraver.cc.
+
+       * lily/local-key-item.cc: remove file
+
+       * lily/include/local-key-item.hh: remove file
+
+       * scripts/ly2dvi.py (make_preview): add --preview-resolution
+       option.
+
+       * lily/accidental.cc (brew_molecule): support for cautionary
+       accidentals. 
+
+       * lily/note-head.cc (internal_brew_molecule): warn if note head
+       not found.
+
+       * lily/time-signature.cc (special_time_signature): remove warning
+       about time signature. 
+
+       * lily/spacing-spanner.cc (musical_column_spacing): Prevent
+       reverse springs by limiting fixed-note space.
+
+2002-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/aclocal.m4: Bugfix: complain if program not found.
+
+       * scripts/update-lily.py (next_version, prev_version, diff_name):
+       New function.  Patches now named name-prev-latest.diff.gz.
+       Bugfix: import shutil.
+
+2002-05-19  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/tutorial/sammartini.ly: fix and document autochange
+       weirdness.
+
+       * scm/pdftex.scm: resurrect PDFTeX output. Still doesn't work, but
+       does produce .pdftex files.
+
+       * lily/note-collision.cc (check_meshing_chords): move file from
+       collision.cc, implement merged note heads (there you go, Drarn :-)
+
+       * input/regression/collision-heads.ly: new file
+
+       * VERSION: 1.5.57 released.
+
+2002-05-18  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * mf/parmesan-heads.mf, scm/grob-description.scm,
+       scm/grob-property-description.scm, scm/interface-description,
+       lily/include/my-lily-parser.hh, lily/include/ligature-head.hh,
+       lily/include/mensural-ligature.hh, lily/include/lily-proto.hh,
+       lily/include/ligature-engraver.hh,
+       lily/include/ligature-bracket.hh, lily/parser.yy,
+       lily/ligature-bracket-engraver.cc, lily/mensural-ligature.cc,
+       lily/mensural-ligature-engraver.cc, lily/note-heads-engraver.cc,
+       lily/ligature-head.cc, lily/ligature-engraver.cc,
+       lily/ligature-bracket.cc, input/test/mensural-ligatures.ly:
+       implemented white mensural ligatures (still with a big list of
+       TODOs)
+
+
+2002-05-19  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/*.cc: use LY_DEFINE everywhere. Move doc strings from
+       Documentation/user/internals.itely.
+
+       * lily/function-documentation.cc: new file. Infrastructure for
+       self documenting Scheme functions.
+
+2002-05-18  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/stem.cc (calc_stem_info): bugfix for less ugly knees.
+
+2002-05-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scripts/lilypond-book.py (re_dict): fix regexps; don't combine ?
+       and * (as in "([^>]*)?")
+
+2002-05-17  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/topdocs/INSTALL.texi: Update GCC, Flex and GUILE info.
+       Add info about CVS.  Stable/development are currently 1.4/1.5,
+       both at lilypond.org.
+
+       * autogen.sh: Generate.
+
+       * stepmake/configure:
+       * configure: Regenerate.
+       
+       * stepmake/stepmake/automatically-generated.sub.make: Keep
+       original first line.
+
+       * stepmake/stepmake/toplevel-targets.make (autogen.sh): Add rule.
+
+       * stepmake/stepmake/generic-targets.make (configure): Generate
+       using autogen.sh.
+
+       * GNUmakefile.in (SCRIPTS):
+       * stepmake/GNUmakefile.in (SCRIPTS): Add autogen.sh
+
+       * stepmake/autogen.sh: New file.
+
+       * configure: Check for g++ >= 2.95.
+
+       * stepmake/aclocal.m4: Fixes for FlexLexer.h, Python headers.  GNU
+       c/c++ version checking.
+
+       * flower/include/string.hh: Typo fix.
+
+       * lily/include/midi-item.hh: Remove stray i.
+
+       * Documentation/windows/GNUmakefile: Avoid collapsed directory
+       constructs '//'.
+       
+       * stepmake/bin/install-dot-exe.sh: Filter collapsed directory
+       constructs '//' from arguments.
+
+2002-05-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scm/lily.scm (ly-load): show SCM filenames if verbose.
+
+       * lily/lily-guile.cc (init_functions): add ly-verbose function.
+
+       * lily/main.cc (setup_paths): remove LILYINCLUDE support. 
+
+       * flower/include/{pointer,tuple}*: removed.
+
+       * VERSION: released 1.5.56
+       
+       * scm/music-functions.scm (check-start-chords): function to check
+       for chords without \context. Apply automatically from parser.
+
+2002-05-16  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/bar-line.cc: remove index entries. Texinfo can't handle  :
+       in index entries.
+
+       * scm/output-lib.scm: fix ez notation stems. 
+
+       * lily/paper-outputter.cc: various fixes to speed up compilation.
+
+2002-05-16  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/lilypond-book.py: Don't import pre for Python >= 2.2
+
+2002-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scripts/lilypond-book.py (determine_format): Bugfix: correctly
+       determine latex input.
+
+       * stepmake/bin/install-sh: Include latest from libtool.
+
+       * stepmake/configure: 
+       * configure: Regenerate.
+
+       * config.make.in: Remove dead variables.  Add OPTIONAL/REQUIRED lists.
+       (USER_CFLAGS): Bugfix, include CPPFLAGS.
+
+       * configure.in: Use new OPTIONAL/REQUIRED mechanism.
+
+       * stepmake/aclocal.m4: Add mechanism for checking OPTIONAL or
+       REQUIRED programs and version.  Try to continue configuring, list
+       missing programs at the end, but don't generate a GNUmakefile if
+       REQUIRED programs are missing.  Cleanups, junk obsolete stuff.
+       Fix Cygwin detection, drop '32' suffix.  Hoping this is not too
+       fancy for some older systems.
+
+2002-05-16  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/score-engraver.cc (typeset_all): sanity check for items
+       that are Y parent to spanner. 
+
+       * lily/piano-pedal-engraver.cc (create_bracket_grobs): fix broken
+       pedal spanners.
+
+2002-05-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/*.cc: remove as many iostream use as possible. 
+
+       * flower/ : remove text-db, text-stream, data-file.
+       
+2002-05-15  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scripts/lilypond-book.py: add --no-music option: strip all blocks.
+       (completize_preamble): don't barf if no preamble present.
+       (do_file): allow extensions on --output
+
+       * scripts/ly2dvi.py (make_preview): make automatic preview of
+       first system. Small cleanups.
+
+2002-05-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * scripts/lilypond-book.py (make_pixmap): output png directly.
+
+       * mf/GNUmakefile (INSTALLATION_OUT_FILES4): create and install
+       fonts.dir file.
+
+       * lily/parser.yy (My_lily_parser): comment out code. (Causes
+       problems  with recent bison releases).
+
+       * make/lilypond.redhat.spec.in: add pfa fonts to X. 
+
+2002-05-07  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-font-lock.el: Fixes the order of the note name list.
+
+2002-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scripts/lilypond-book.py: Add html/dtml output, pseudo-filter
+       capability, --verbose option, rlimit hack.
+
+2002-05-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/piano-pedal-engraver.cc: cleanups.
+
+       * lily/accidental.cc (after_line_breaking): add break tie
+       reminders.
+
+       * lily/text-engraver.cc (try_music): don't typeset fingerings
+
+2002-05-05  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-font-lock.el: Handle \breve as a note (rest) duration.
+
+2002-05-04  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/*.cc: change gh_str02scm() to ly_str02scm().
+
+       * lily/spacing-spanner.cc (note_spacing): Bound
+       shortest-playing-length by the distance to next note. This should
+       fix chord tremolo spacing.
+
+       * VERSION: 1.5.55 released
+
+       * lily/stem.cc (off_callback): invisible stem over whole note is
+       centered on note now.
+
+       * lily/stem-engraver.cc (acknowledge_grob): X_AXIS Parent of
+       stem-tremolo is stem now.
+
+       * input/mozart-hrn*.ly: many corrections. 
+
+       * lily/dynamic-engraver.cc (acknowledge_grob): add Scripts  to
+       support for dynamic scripts.
+
+       * lily/accidental-placement.cc (position_accidentals): check for
+       collisions as well: should avoid those heads too.
+
+       * lily/beam.cc (check_concave): allow undefined gap and
+       threshold. Change the meaning of threshold/gap == 0.0.
+       (check_concave): skip Stolba concaveness check if we have a knee
+       on outer stems.
+
+2002-05-03  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * lily/chord-tremolo-engraver.cc (try_music): Handle chord
+       tremolos of dotted duration.
+
+2002-05-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-klef.mf: more twiddling with G clef. Almost straight
+       downstroke again. Sigh.
+
+       * lily/dynamic-engraver.cc (acknowledge_grob): center dynamic
+       script on note head.
+
+2002-05-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/slur.cc (add_column): allow slur over rest. 
+
+2002-04-27  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc: move scoring constants out of code
+
+2002-04-25  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-nummer.mf: scalability fixes.
+
+       * mf/feta-nummer-code.mf: fixes for 5, 8. 
+
+       * mf/feta-klef.mf: G clef fixes.
+
+2002-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scripts/ly2dvi.py: Mats' fix.  Try to import pre if available.
+
+       * scripts/lilypond-book.py: %Newline, rather than glue macros
+       after \end{verbatim}.
+
+2002-04-24  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/lilypond-book.itely: 
+       * scripts/lilypond-book.py: Add options [no]indent, linewidth and
+       noinline.
+
+       * input/mozart-hrn3-defs.ly (startGraceContext): Customize grace init.
+
+       * scm/grob-property-description.scm (beam-space): Junk.
+
+       * lily/beam.cc (space_function): New method.
+       (get_interbeam): Call space-function.
+
+       * scm/grob-description.scm (Beam): Initialize space-function with
+       Beam::space_function.
+
+       * ly/grace-init.ly (startGraceMusic, stopGraceMusic): Set/revert
+       Beam.space-function.  Don't quantise grace beams.
+
+2002-04-23  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.54 released
+
+       * mf/feta-nummer-code.mf (code): tweaks for three, fixes for 6
+       bulb. 
+
+       * Documentation/index.texi: add PDF links.
+
+       * Documentation/user/GNUmakefile (PDF_FILES): add PDF files to website.
+
+       * lily/system-start-delimiter-engraver.cc (acknowledge_grob):
+       compare #'glyph as strings. 
+
+       * scripts/lilypond-book.py: fix by Mats. Try to import pre if available.
+
+       * scripts/ly2dvi.py (setup_environment): fix by Mats.
+
+       * lily/stem.cc (head_count): Change function name. Change property
+       to #'note-heads i.s.o.  #'heads.
+       (position_noteheads): Kern noteheads for invisible stems.
+       (before_line_breaking): Do position_noteheads() for whole note
+       heads too.
+
+       * lily/accidental-placement.cc (position_accidentals): First
+       determine refpoints, only then determine extents.  
+
+2002-04-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/accidental-placement.cc (position_accidentals): use all
+       note heads for note head-skyline. 
+
+       * scripts/lilypond-book.py (re_dict): remove all *? regexps.
+
+2002-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/windows/setup.hint (requires): Add gsview dependency.
+
+       * scripts/lilypond-book.py (re_dict): Fix for python 2.x.
+
+       * lilypond-mode.el (LilyPond-xdvi-command): Default to plain xdvi.
+
+       * input/mozart-hrn3-allegro.ly: Bugfix: include defs.
+
+2002-04-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * mf/feta-schrift.mf: lighter staccato.
+
+2002-04-22  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-nummer-code.mf (code): fixes for 3 glyph.
+
+2002-04-21  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.53 released
+
+       * scm/lily.scm (ly-load): use primitive-load for loading.
+
+       * lily/misc.cc: remove quantise_iv()
+
+       * lily/*.cc: pass read-only arrays by reference.
+       
+       * lily/grob.cc (common_refpoint_of_array): new function. Try to
+       use common_refpoint_of_{array, list} when possible.
+
+       * lily/include/accidental-placement.hh: new file.
+
+       * lily/accidental-placement.cc (alignment_callback): position
+       accidentals in a better way.
+
+       * lily/skyline.cc: new file. Compute distances for collections of
+       boxes.
+
+       * lily/include/skyline.hh: new file
+
+2002-04-20  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/accidental.cc (class Accidental_interface): grob for a
+       single accidental.
+
+       * lily/accidental-engraver.cc (number_accidentals): Cleanups. Lots
+       of reformatting
+
+       * lily/new-accidental-engraver.cc (acknowledge_grob): Work
+       together with new accidental-interface. 
+
+       * lily/include/*.hh: remove spurious set_interface() decls.
+
+       * lily/key-signature-interface.cc (brew_molecule): add padding for
+       natural signs. Make natural typesetting like the sharp.
+       
+
+       * mf/feta-klef.mf: rewrote portion of the G-clef code. Downstroke
+       is now slightly curved, not straight.
+       
+
+2002-04-18  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el: Toggles font-lock-multiline (Emacs 21.1 or newer).
+
+       * lilypond-font-lock.el: Handles multiline-strings. Fontifies notes 
+       more strictly. Use more clever regular expressions. Commented regexps.
+
+2002-04-16  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el: "C-c f" does font-lock-fontify-buffer.
+
+2002-04-15  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * scm/grob-description.scm, lily/staff-symbol.cc: added properties
+       to control width of staff symbol in ragged-right mode (by request
+       of Han-Wen)
+
+       * ly/engraver-init.ly, lily/include/my-lily-parser.hh,
+       lily/include/ligature-bracket.hh, lily/lexer.ll, lily/parser.yy,
+       lily/ligature-bracket.cc, lily/ligature-bracket-engraver.cc:
+       added support for ligature brackets (needed when transcribing
+       mensural music)
+
+2002-04-15  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-font-lock.el: Handle scheme-slurs up to seventh level.
+       Fontify notes more strictly.
+
+2002-04-15  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-din-code.mf: dynamic z sign.
+
+2002-04-13  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el: Prevent recoloring strings and comments.
+
+       * lilypond-font-lock.el: Handle block comments: block comments
+       can have also ordinary comments inside.
+       
+2002-04-13  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/stem.cc (get_default_dir): set direction to CENTER if
+       invisible. Various other fixes to deal with invisible stems and
+       stem-direction == CENTER.
+
+       * lily/rest-collision.cc (do_shift): take direction from note if
+       not set.
+
+       * input/regression/tie-grace.ly: new file.
+
+       * lily/tie-engraver.cc (create_grobs): fix tied graces.
+
+       * lily/note-spacing.cc (stem_dir_correction): set fixed space for
+       knee correction. Fixes tight spacing for knees.
+
+2002-04-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.52 released
+       
+       * lily/*.cc: add some undocced properties.
+       scm/grob-description.scm: idem.
+
+2002-04-12  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-font-lock.el: Handle slurs \( and \), numbers,
+       multi-measure rests like "R1 *4" and scheme (typically has '#' 
+       in the beginning). Small fixes. Add few reserved words.
+
+2002-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/topdocs/INSTALL.texi: Updates for MacOS X and
+       emacs mode.
+
+       * Documentation/windows/installing.texi: Suggest gswin32c (console
+       program) for getting the version.  Layout fixes.
+
+2002-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/user/tutorial.itely (Running LilyPond):  Separate
+       windows viewing commands, remove silly comment about Yap.
+
+2002-04-10  Mats Bengtsson  <matsb@s3.kth.se>
+       
+       * Documentation/topdocs/INSTALL.texi: Describe how to learn
+       configure to find kpathsea on for example Slackware 8.0.
+
+       * scripts/ly2dvi.py (non_path_environment): Set $TEXMF correctly.
+
+        * scm/grob-description.scm (MultiMeasureRest): number-threshold=1
+        by default: avoid "1" over single bar rests.
+
+       * scripts/lilypond-book.py (LatexPaper.set_geo_option): Simplify
+       and correct the handling of geometry options.
+
+2002-04-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/include/grob-interface.hh (ADD_INTERFACE): make
+       implementation for Class::has_interface automatically. Junk all
+       other implementations.
+
+       * lily/grob.cc (internal_get_grob_property): also typecheck
+       property reads. Catches even more undocced properties. Bugfixing
+       left for the uninspired masses.
+
+       * lily/beam.cc: remove end_after_line_breaking().
+
+       * lily/grob.cc (calculate_dependencies): remove list support for
+       callbacks.
+
+       * lily/font-size-engraver.cc: only do font-interface.
+
+2002-04-10  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-font-lock.el: Handle notes with cautionary accidentals.
+         Add few keywords.
+
+2002-04-09 Chris Jackson <chris@fluffhouse.org.uk>
+
+       * lily/arpeggio.cc: New function brew_chord_bracket to draw chord
+       brackets using arpeggio requests.
+       
+       * ly/property-init.ly: Shorthand \arpeggioBracket defined as the
+       molecule-callback to use for drawing the brackets.
+
+       * Documentation/user/refman.itely: 
+       * input/test/chord-bracket.ly: Chord brackets documented
+       
+2002-04-10  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-din-code.mf: tweaks for p, s. New dynamic r sign. 
+
+       * mf/feta-eindelijk.mf: tweak for eighth rest: move bulb up.
+
+2002-04-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/tuplet-bracket.cc (after_line_breaking): bugfix for forced
+       direction tuplets on beams.
+
+2002-04-08  Chris Jackson <chris@fluffhouse.org.uk>
+
+       * lilypond-indent.el: Bugfix of indentation of final point in buffer
+
+2002-04-09  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el: new command: LilyPond-un-comment-region.
+       Added 2Midi to "Command"-menu. Inspired by latex.el and tex.el: 
+       separate "Command"-menu and "LilyPond"-menu. Added "Miscellanous"-
+       submenu to "LilyPond"-menu.
+
+       * lilypond-mode.el: Added "Midi all" to "Command"-menu, i.e.,
+       an interface to play midi.
+
+2002-04-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * input/regression/script-stack-order.ly: new file.
+
+2002-04-08  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION (MY_PATCH_LEVEL): Release 1.5.51.
+
+       * mf/feta-din-code.mf: kerning for dynamics.
+
+2002-04-07  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/regression/dynamics-glyphs.ly: new file
+
+       * mf/feta-din-code.mf: dynamic tweaks. New dynamic s.
+
+       * mf/feta-nummer-code.mf: another bulb routine: mimic the bulb of
+       forte f for the 2 number. Some fixes for the other bulbed glyphs.
+
+       * Documentation/windows/gs-profile.sh:
+       * Documentation/windows/gsview-profile.sh: Remove.  Functionality
+       moved to gs/gsview windows packages.
+
+2002-04-06  Mats Bengtsson  <matsb@s3.kth.se>
+
+       * lily/stem-engraver.cc (acknowledge_grob): Revert to old way of
+       finding out the duration. Fixes chord tremolo bug. 
+
+       * lily/completion-note-heads-engraver.cc (process_music): Set
+       correct duration for all requests of the broken notes.
+
+       * input/regression/completion-heads.ly: Added example of
+       Completion_heads_engraver.
+
+       * lilypond-mode.el: Added "2Midi" command
+
+2002-04-06  Chris Jackson <chris@fluffhouse.org.uk>
+
+       * lily/tuplet-bracket.cc, scm/grob-description.scm: New
+       edge-width, edge-height and shorten-pair properties for tuplet
+       brackets.
+
+       * lilypond-indent.el: Support for blinking of matching parentheses
+       
+       * lilypond-font-lock.el: Fix fontification of closing > on its own line
+       
+       * lily/piano-pedal-engraver.cc, lily/text-spanner.cc: Fixes and
+       cleanups of piano pedal brackets.
+
+2002-04-05  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/cmbase.mf: remove file. -- do without s, r and z signs for now.
+
+2002-04-04  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-new-code.mf:  new dynamic f sign.
+       new dynamic m sign.
+
+2002-04-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * mf/feta-new-code.mf: new dynamic p sign.
+
+2002-04-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/note-spacing.cc (stem_dir_correction): only do
+       beam-correction if a beam is there. 
+
+       * lily/stem.cc (duration_log): change from flag_i (); better
+       naming.
+       (get_default_stem_end_position): fix dot/flag collision code.
+
+2002-04-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: release 1.5.50
+
+       * lily/spaceable-grob.cc (add_spring): change incorrect spring to
+       unit spring here. Reduces number of warning messages.
+
+       * lily/auto-beam-engraver.cc: change noAutoBeaming to autoBeaming.
+
+2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scm/generic-property.scm: remove generic-property, property-engraver
+
+       * lily/volta-bracket.cc (brew_molecule): use Lookup::line() for bracket
+
+       * lily/hairpin.cc (brew_molecule): use Lookup::line() for hairpins.
+
+       * ps/music-drawing-routines.ps: remove volta, tuplet, hairpin routines.
+
+       * scm/*.scm: remove volta, hairpin and tuplet functions.
+
+       * lily/rhythmic-column-engraver.cc (acknowledge_grob): don't make
+       note column for notes/stems/dots that already have parents. Fixes
+       nested grace contexts.
+
+2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/mozart-hrn-3.ly: Tweak Slur.beautiful, so that we don't
+       get too curved slurs.
+
+       * scm/slur.scm (default-slur-extremity-offset-alist) 
+       (default-phrasing-slur-extremity-offset-alist): Move slur
+       attachments further away from note-head, vertically.  Also, leave
+       a horizontal gap between slur and stem end.
+
+       * lily/beam.cc (get_interbeam): Bugfix: don't look in empty list.
+
+2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/regression/spacing-grace-duration.ly: new file
+
+       * lily/spacing-engraver.cc (acknowledge_grob): ignore grace notes
+       for shortest durations.
+
+       * lily/multi-measure-rest.cc (set_spacing_rods): tune rods to the
+       extent of the mm rest. 
+
+       * lily/spacing-spanner.cc (get_duration_space): better spacing for
+       really short notes.
+
+       * lily/tuplet-bracket.cc (make_bracket): new function
+       (get_x_offset): new function; make tuplet brackets align on stems
+       if stem has same direction.
+       (parallel_beam): be anal about matching bracket to tuplet.
+
+       * lily/lookup.cc (line): new function Lookup::line(). 
+
+       * scm/tex.scm (dashed-line): change -line to -system in names.
+
+       * lily/box.cc (add_point): new function.
+
+       * flower/include/interval.hh: new function add_point ().
+       new function widen()
+       
+2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/mozart-hrn-3.ly: Mimic Breitkopf fonts and padding.
+
+       * scm/grob-property-description.scm (number-threshold): Add
+       description.
+
+       * lily/multi-measure-rest.cc (brew_molecule): Only put number over
+       rest if #measures > number-threshold.  Use padding (well, fake
+       using it, anyway).
+
+       * scm/font.scm (make-style-sheet): New styles: mark-number,
+       mark-letter.
+       (paper20-style-sheet-alist): Add bigger bold fonts.
+
+       * lily/mark-engraver.cc (process_music): Use style mark-number or
+       mark-letter.
+
+       * .cvsignore: Ignore all kinds of lilypond input and output.
+
+       * lily/beam.cc (ADD_INTERFACE): Add concaveness-gap.
+
+2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/staff-symbol.cc (brew_molecule): make line thickness
+       adjustable.
+
+       * lily/*.cc: replace stafflinethickness by linethickness.
+
+2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/regression/beam-concave.ly: Add to-be-considered-concave
+       beam.
+
+       * lily/beam.cc (check_concave): Add check for large gap between an
+       inner notehead and the line through outer noteheads.
+
+       * scm/grob-description.scm (Beam): Add concaveness-gap, default
+       value 2.0 staff-space.
+       
+       * scm/grob-property-description.scm (concaveness-gap): Add
+       description.
+
+       * input/mozart-hrn3-allegro.ly: Fix typo.
+
+2002-03-31  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * scm/ps.scm, ps/music-drawing-routines.ps, lily/lookup.cc,
+       lily/note-head-engraver: improved implementation of roundfilledbox
+       (according to Han-Wen's request)
+
+       * lily/include/spacing-spanner.hh, lily/spacing-spanner.cc,
+       lily/gourlay-breaking.cc, lily/staff-symbol.cc,
+       lily/simple-spacer.cc: ragged-right alignment
+
+2002-03-29  Han-Wen  <hanwen@cs.uu.nl>
+
+       * input/regression/spacing-note-flags.ly: new file
+
+       * input/regression/spacing-rest.ly: new file
+
+       * mf/feta-eindelijk.mf: make bbox of quarter rest tighter.
+
+       * lily/spacing-spanner.cc (note_spacing): make note spacing after
+       all grace notes tight (not only the column directly following a
+       grace note).
+
+       * scm/grob-description.scm (all-grob-descriptions): don't make
+       mm-rests larger than normal.
+
+       * mf/feta-banier.mf: make upflag narrower. Make end of flag more
+       curved. Remove white space at the right of flags.
+
+2002-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * ports/ports.make: Bugfix: ignore CVS directories.
+
+       * stepmake/.cvsignore: New file.
+
+2002-03-28  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/note-spacing.cc (stem_dir_correction): don't correct when
+       there is a flag on the stem.
+
+       * lily/multi-measure-rest.cc (brew_molecule): variable width molecule.
+
+       * scm/grob-property-description.scm (measure-length):
+       measure-length grob property.
+
+       * lily/spacing-spanner.cc (standard_breakable_column_spacing):
+       better spacing for breakable columns when they're juxtaposed: use
+       measure length if applicable
+
+       * lily/timing-engraver.cc (start_translation_timestep): store
+       measure length in breakable column at start of measure.
+
+2002-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * ROADMAP: Add description for ports dir, to check email upon
+       commit.
+
+2002-03-27  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.48 released
+       
+       * lily/multi-measure-rest.cc (symbol_molecule): split off from
+       brew_molecule()
+       (set_spacing_rods): Use symbol_molecule() to determine minimum
+       width
+       (church_rest): split off from brew_molecule()
+       (big_rest): split off from brew_molecule(). Construct using
+       variable shape.
+       
+       * mf/feta-eindelijk.mf: junk multi measure rest.
+
+2002-03-26  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/multi-measure-rest.cc (add_column): remove columns property.
+
+       * lily/dynamic-engraver.cc (process_music): add more verbose warning
+
+       * input/mozart-hrn3-romanze.ly (romanze): add mozart horn concerto
+       3 as test piece.
+
+2002-03-26  Heikki Junes <hjunes@cc.hut.fi>
+
+       * lilypond-font-lock.el (LilyPond-font-lock-keywords): most new
+       keywords covered, dropped some non-keywords, include R- and 128-notes
+
+2002-03-25 Juergen Reuter <reuter@ipd.uka.de>
+
+       * Code clean-up: Junk multiple implementations of ledger line
+       creation in note_head, custos, and porrectus.  This is important
+       since there soon will be some more applications of ledger lines to
+       come (e.g. ambitus engraver).
+
+       * Make thickness of ledger lines adjustable.  This is essential
+       for mensural notation.
+
+       * Fix some bugs in the current ledger_line implementation, most
+       notably that of the horizontal extent of ledger lines which equals
+       at least the extent of the metafont ledger_line character, and
+       which grows(!) if the desired extent shrinks below this limit.
+
+       * roundfilledbox: variable blotdiameter
+
+2002-03-24  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.47 released
+
+       * lily/line-spanner.cc (line_atom): change line-thickness to thickness
+
+       * lily/porrectus.cc:  change line-thickness to thickness, change
+       stem-direction to direction.
+
+       * scm/backend-documentation-lib.scm (check-dangling-properties):
+       Automatically detect doc'ed properties that are not in an interface
+
+       * scm/grob-property-description.scm: property cleanup. Remove many
+       paper-column props that are non-existent.
+
+       * lily/grob.cc (Grob): only use molecule_extent_proc as default if
+       the grob has a molecule-callback.
+
+       * lily/*.cc: remove many set_interface() calls, and their
+       implementations.
+
+       * input/regression/spacing-knee.ly: new file
+
+       * input/regression/spacing-clef-first-note.ly: new file
+
+       * lily/staff-spacing.cc (get_spacing_params): different spacing
+       for pref matter to note at start of line, halfway during line.
+
+       * lily/note-spacing.cc (stem_dir_correction): apply 2nd stem direction
+       correction only if stems have same direction (i.e. not for
+       stem-clef combination).
+       (stem_dir_correction): maximal correction for knees.
+
+       * lily/*.cc: many updates to interface descriptions.
+       
+       * lily/grob.cc (internal_set_grob_property): add interface check
+       for every set_grob_property call
+
+       * lily/*.cc: document interface stuff in C++
+       
+       * lily/grob-interface.cc: new file. Add grob interfaces from C++. 
+
+       * lily/volta-bracket.cc: naming: change volta spanner to
+       volta-bracket.
+
+       * input/bugs/*.ly: cleanup, remove lots of files.
+       
+       * buildscripts/mf-to-table.py (write_ps_encoding): generate
+       .encoding file. WARNING: upgrade to pktrace 1.0.3
+
+       * mf/feta-toevallig.mf: change PS name for parentheses.
+
+2002-03-23  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Use the correct unit
+       also for textheight
+
+2002-03-23  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/scope.cc: remove file .
+
+       * lily/include/scope.hh: remove file. Remove Scope class
+
+       * VERSION: 1.5.46
+
+       * lily/beam.cc (score_slopes_dy, score_stem_lengths,
+       score_forbidden_quants): ): take out of SCM, pass parameters so
+       grob props are read only once. (wtk1-fugue2 from 31 sec to 14
+       secs).
+       (calc_stem_y): robustness: take care of last_visible_stem == 0.
+
+
+       * lily/lily-guile.cc (ly_unit): return internal unit.
+
+       * scm/tex.scm (header-end): insert scaling factor, using ly-unit 
+
+       * lily/paper-outputter.cc (output_version): output internal unit
+       from Paper_outputter
+
+       * scripts/ly2dvi.py: Read unit from paper vars (43.jcn3).
+
+2002-03-22  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * scripts/ly2dvi.py: clean up old .*pk font caching code.
+
+       * scm/ps.scm: Use uppercase postscript font names for the standard
+       TeX fonts.
+
+       * scripts/ly2dvi.py, buildscripts/lilypond-{login,profile}.sh, :
+       Add all available TeX Type1 fonts, including Feta, to the
+       Ghostscript font path.
+
+       * Documentation/topdocs/INSTALL.texi (Top): Add required pktrace
+       version (affects the FontName) in lilypond.map.
+
+       * mf/GNUmakefile, Documentation/user/appendices.itely: Rename font
+       documentation file to fetaNNlist.ly to avoid name collisions between
+       lilypond generated .tex file and font .tex macros file.
+
+
+2002-03-22  Juergen Reuter <reuter@ipd.uka.de>
+
+       * mf/feta-eindelijk.mf, mf/parmesan-rests.mf: added maxima rests;
+       made mensural longa and (semi-)brevis leaner
+
+       * mf/parmesan-clefs.mf, scm/clef.scm: enhanced petrucci c clef
+
+       * lily/{{lookup,porrectus}.cc,include/{lookup,porrectus}.hh}: code
+       clean-up: moved bezier shape and slope from porrectus to lookup
+
+       * buildscripts/clean-fonts.sh: added search paths /var/cache/fonts
+       and /usr/share/texmf/fonts
+
+       * scripts/ly2dvi.py: Read unit from paper vars (43.jcn3).
+
+2002-03-22  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/text-spanner.cc (brew_molecule): add #'thickness
+       (brew_molecule): add corrections for thickness in molecule padding.
+
+       * lily/line-spanner.cc (line_atom): make function private
+
+       * scripts/lilypond-book.py (get_bbox): Use GS -sDEVICE=bbox to
+       discover bounding box. This solves the cropping problem.
+
+       * lily/bar-check-iterator.cc (process): Only resynchronize bar
+       check when it  fails. This fixes the combination of  grace notes
+       and bar checks.
+
+2002-03-21  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/repeated-music.cc (minimum_start): new Scheme callable function
+       (first_start): new Scheme callable. This will fix repeated music
+       starting with grace notes.
+
+       * lily/music.cc (start_mom): check start-moment-function grob property.
+
+       * VERSION: 1.5.45 released
+
+       * input/regression/system-extents.ly: new regression test. Test
+       System extents. 
+
+       * lily/system.cc: rename LineOfScore into System 
+
+       * lily/molecule.cc (ly_add_molecule): new Scheme ly-add-molecule.
+
+       * lily/grob.cc (ly_get_parent): new Scheme function ly-get-parent.
+       (ly_get_extent): new Scheme function ly-get-extent
+
+       * ps/lilyponddefs.ps: use output-scale for  line-x
+       definition. 
+
+       * scm/ps.scm (font-load-command): 
+       use output-scale
+
+2002-03-20  Rune Zedeler <rune@zedeler.dk>
+       
+       * lily/beaming-info.cc: Stupid typo fixed
+       
+       * lily/accidental-engraver.cc: rewrote accidental-routines to get
+       support for cross-context auto-accidentals.
+       Now the engraver can stay in Staff-context and see other contexts
+       from there.
+       Changed properties: autoAccidentals, autoCautionaries
+
+       * lily/translator-group.cc (set_children_property):
+       Function added recursively setting the same property (deep_copied)
+       for all children of a Translator_group.
+       
+       * ly/property-init.ly: added commands
+       \pianoAccidentals \voiceAccidentals
+       \modernVoiceAccidentals \modernVoiceCautionaries
+
+       * ly/engraver-init.ly: Correct initialization of new accidentals.
+       
+       * scm/translator-property-description.scm: Updated
+       
+       * input/regression/accidental-voice.ly: Added
+       
+       * Documentation/regression-test.tely: Added new test    
+
+2002-03-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.44 released
+
+       * lily/slur.cc (set_extremities): robustness fixes for #'attachment.
+
+       * scripts/lilypond-book.py (bounding_box_dimensions): bugfix.
+
+       * ly/params-init.ly (blotdiameter): use unit for blotdiameter, set
+       at 0.4 pt.
+
+       * tex/feta*.tex: remove.
+       
+       * stepmake/aclocal.m4: remove stepmake symlink. It confuses almost
+       all software dealing with it.
+
+2002-03-20  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * mf/GNUmakefile (lilypond.map): Don't prepend TeX to font name
+       (this fixes pdf output).  Drop awk dependency.
+
+       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Assume LilyPond's
+       dimensions (linewidth) are in mm.
+
+       * mf/GNUmakefile (depth): Always allow manual access to pfa target.
+
+       * tex/lily-ps-defs.tex: scaletounit using PT/IN==72.
+
+       * lily/slur.cc (get_attachment): Bugfix: correct for stem thickness.
+
+2002-03-19  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.43 released
+
+       * scm/beam.scm (beam-dir-majority-median): if majority is
+       undecided, use median. Removes a forced dir in sarabande.
+
+       * mf/feta-schrift.mf: Trill fixes, Vee fixes (upbow, ltoe, rtoe)
+
+2002-03-18 Chris Jackson <chris@fluffhouse.org.uk>
+       * lily/text-spanner.cc, lily/piano-pedal-engraver.cc: Cleanups. Edge
+       widths, heights and shortens are now customisable properties.
+       * scm/grob-description.scm, scm/grob-property-description.scm: New
+       properties added to PianoPedalBracket, unnecessary
+       Y-offset-callbacks removed from *Pedal, undocumented properties
+       fixed.
+       * Documentation/user/refman.itely: Piano pedal updates.
+
+2002-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/grob-property-description.scm:
+       * scm/interface-description.scm: Remove old stuff.
+
+       * scm/grob-description.scm (StemTremolo): Change beam-thickness to
+       0.48 (previously 0.42).
+       (Beam): Remove old stuff.
+
+       * lily/stem.cc: 
+       * lily/stem-tremolo.cc: 
+       * lily/beam.cc: 
+       * scm/beam.scm: Remove old stuff.  Use Beam::get_interbeam ()
+       (previously space-function).
+
+       * stepmake/bin/add-html-footer.py: Website title fix.
+
+2002-03-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * scripts/ly2dvi.py (environment): use new font searching setup.
+
+       * lily/afm.cc (afm_bbox_to_box): make code dimension independent
+
+       * lily/tfm.cc (dimensions): make code dimension independent
+
+       * ps/lilyponddefs.ps: add constant for MM and true/ps-point
+       scaling
+
+       * tex/lily-ps-defs.tex: scaling for PS points and MM.
+
+       * lily/include/dimensions.hh: try MM as internal unit.
+
+       * scm/*.scm: remove invoke-dim1
+
+2002-03-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * GNUmakefile.in (fontpaths): add fontpaths target,
+
+       * make/mutopia-targets.make: add PDF rules.
+
+       * make/mutopia-rules.make: add pdf rule.
+
+       * buildscripts/mutopia-index.py (list_item): add PDF.
+
+       * buildscripts/lilypond-profile.sh (TEXMF): typo.
+
+       * make/lilypond-vars.make: set TEXMF for the new font setup.
+2002-03-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.42 released
+       
+       * mf/feta-schrift.mf: endless twiddling of Tr.
+
+       * mf/feta-eindelijk.mf: 8th rest: make darker, top of brush lower, and
+       endless twiddling with the bulb shape.
+
+       * lily/note-head.cc (internal_brew_molecule): make ledger lines a
+       little smaller if there is an accidental.
+
+2002-03-15  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+       * buildscripts/lilypond-profile.sh: 
+       * mf/GNUmakefile (INSTALLATION_OUT_DIR*),
+       buildscripts/lilypond-login.sh, buildscripts/lilypond-profile.sh:
+       Implement new font installation strategy
+       * Documentation/misc/fontinstallation (TEXMF): Documentation of
+       the new font installation strategy.
+       * lilypond-mode.el (LilyPond-mode-map): Add shortcut "CTRL-c ;"
+       for comment-region.
+       * input/test/staff-size.ly: Simplified using StaffContainer
+       * mf/GNUmakefile (ALL_GEN_FILES): Actually generate the
+       lilypond.map file
+
+2002-03-17  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/ps.scm (bezier-sandwich): Draw circles at slur ends.
+
+       * lily/beam.cc (score_stem_lengths): new quanting stuff
+       (score_forbidden_quants): Second and third beam quant stuff.
+
+2002-03-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/beam.cc (least_squares): Remember least-squares-dy for
+       later use.
+       (quantise_interval): Don't quant to dy steeper that
+       least-squares-dy.  Return empty interval if no sane quants found.
+       (quantise_position): Try quantise_interval until we have
+       acceptable solution.
+
+2002-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/interface-description.scm (beam-interface): Update.
+
+2002-03-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.41 released
+       
+       * mf/feta-schrift.mf: make Tr. smaller, smoother and closer.  Use
+       optima serifs on top of t, bottom of r.
+
+       * mf/feta-bolletjes.mf: make ledger line rounder. 
+
+       * mf/feta-toevallig.mf: some smallish fixes for flat sign.
+
+       * mf/feta-eindelijk.mf: make 8th rest a little darker, some more
+       parametrization.
+
+2002-03-15 Chris Jackson <chris@fluffhouse.org.uk>
+       * lily/piano-pedal-engraver.cc: Rewritten to support bracketed as
+       well as text pedal indications and a combination of both.  All
+       pedal indications are horizontally aligned on a line spanner.
+       * lily/text-spanner.cc: Edge-width property added to use in
+       bracketed piano pedals. Function setup_sustain_pedal added to set
+       the dimensions of the brackets. 
+       * scm/grob-description.scm: New *PedalLineSpanner grobs added, and 
+       some of the *Pedal properties tweaked. 
+       * scm/grob-property-description.scm: New pedal-type (*Pedal) and
+       edge-width (TextSpanner) properties.
+       * ly/engraver-init.ly: Default strings added for SostenutoPedal. 
+       * lilypond-font-lock.el: sostenuto, unaCorda and treCorde added to
+       fontified identifiers list.
+       * input/test/pedal.ly: New pedal features added. 
+       * Documentation/user/refman.itely: New pedal features documented.
+       
+
+2002-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/include/new-beam.hh: Previously new-beam.hh
+       * lily/beam.cc: Previously new-beam.cc
+       (least_squares): Bugfix: don't barf on beams with less than two
+       visible stems (tremolos).
+
+       * scm/beam.scm: 
+       * scm/grob-description.scm (Beam): Junk old beam stuff.
+       
+       
+2002-03-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.40
+
+       * mf/feta-eindelijk.mf: new 8th rest.
+
+       * mf/feta-toevallig.mf: small fixes for the sharp symbol. Don't
+       stick out of staffline
+
+       * scripts/lilypond-book.py: fixes for texi regular expressions.
+
+2002-03-14  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/include/new-beam.hh:
+       * lily/new-beam.cc: New file.
+
+       * flower/include/interval.hh: 
+       * flower/include/interval.tcc (delta): New method.
+       (swap): Now public (previously private).
+       
+       * scm/beam.scm (default-beam-y-quants): Bugfix: lower beam-sit by
+       1 staff-line-thickness.  Sadly, this makes dy quanting problems
+       (dy quants allowed should depend on actual left y) more visible.
+
+2002-03-13  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/beam.cc (quantise_dy): Bugfix: sign (0) = 0.  Hmm.
+
+       * scm/grob-property-description.scm (concaveness-threshold): Add
+       typecheck and description.
+
+       * scm/grob-description.scm (Beam): Remove obsolete properties, add
+       concaveness-threshold (previously concaveness).
+
+       * lily/beam.cc (check_concave): Remove choices and debugging
+       stuff: use best concaveness calculation.
+       (quantise_dy): Remove choice.  Try to never make a slope steeper
+       by quantising, but certainly never quantise a slope away.
+       (check_stem_length_f): Remove choice.  In case of lengthening
+       alowed, always lengthen to ideal length.
+
+       * Documentation/index.texi: Fix FAQ url.
+
+       * Documentation/topdocs/INSTALL.texi: Add information about fink,
+       compile fix and 1.4 specific fix that doesn't hurt 1.5.
+
+2002-03-13  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.39 released
+
+       * lily/simple-spacer.cc (add_rod): rods take precedence over
+       infinitely stiff springs. This fixes bugs with arpeggios and bar-lines.
+
+       * lily/arpeggio-engraver.cc (acknowledge_grob): clean up.
+
+       * lily/note-spacing.cc (get_spacing): only insert space for
+       accidentals if necessary.
+
+       * input/regression/spacing-accidental-staffs.ly (texidoc): update example
+
+       * lily/spacing-spanner.cc (musical_column_spacing): new
+       function. Have correct spacing from note to end-of-line as well.
+
+2002-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/topdocs/INSTALL.texi: Add section for MacOS X.
+
+       * darwin.patch: New file.
+
+       * lily/beam.cc (set_stem_shorten): Revive deceased stem shorten
+       code.  Shorten stems by fraction of stems to be shortened.
+
+       * lily/stem.cc (get_default_stem_end_position): Shorten only half
+       of shorten value for boundary cases.
+
+       * scm/grob-description.scm (Stem): Set stem-shorten to (1.0 0.5).
+       (Beam): Set beamed-stem-shorten to (1.0 0.5).
+
+2002-03-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/beam.cc (check_stem_length_f): Try to lenthen more.
+
+       * scm/grob-description.scm (Beam): Add concaveness.  Replace
+       Beam::cancel_suspect_slope with Beam::check_concave.
+       * lily/beam.cc (check_concave): Calculate concaveness of beam, and
+       set slope to horizontal if concaveness > Beam.concaveness.  This
+       handles cases that kludgy cancel_suspect_slope was meant to catch
+       very well.
+       (cancel_suspect_slope): Remove.
+
+2002-03-12 Rune Zedeler <rune@zedeler.dk>
+
+       * lily/beam.cc lily/stem.cc lily/beam-engraver.cc: allow for
+       stemLeftBeamCount and stemRightBeamCount to equal 0.
+       Fixes [c8 c4 c8]
+      
+2002-03-12  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/spacing-spanner.cc (breakable_column_spacing): Only do
+       fixed spacing for pref matter, if the next column is musical, and
+       at the same moment.
+
+       * lily/note-spacing.cc (stem_dir_correction): Use correct
+       discretionary for stem-bar spacing.
+
+2002-03-11  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.38 released 
+
+       * lily/grob.cc (warning): Use cause tracking to give more
+       meaningful errors from the backend. 
+
+       * lily/property-iterator.cc (check_grob): Warn if setting grob
+       property in unknown grob. 
+
+       * mf/feta-toevallig.mf: brushed stems for natural sign.
+
+       * lily/molecule.cc (align_to): don't translate empty molecule.
+       (this triggers a very subtle bug in time-signature.)  
+
+2002-03-10  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/spring.cc: remove file.
+
+       * input/regression/spacing-stem-bar.ly: new file
+
+       * lily/score.cc (run_translator): resurrect point-and-click
+
+       * input/baerenreiter-sarabande.ly: Copy Barenreiter beaming for
+       sarabande layout
+
+       * lily/spacing-spanner.cc (find_shortest): Shortest note for
+       spacing is now globally determined, using the most common shortest
+       note. Notes that are shorter are spaced geometrically, and with
+       expand hints. This makes spacing more even, and measures that have
+       very short notes won't be that stretched out.  
+
+       * mf/feta-klef.mf: F-clef fixes, documentation on the
+       shape. (WARNING: font changed.)
+
+2002-03-09  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/simple-spacer.cc (add_columns): support for infinitely
+       stiff springs.
+       * lily/staff-spacing.cc (get_spacing_params): space after
+       prefatory matter is fixed.
+
+2002-03-08  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/note-spacing.cc (stem_dir_correction): Correct spacing for
+       barline following an upstem.
+
+       * lily/staff-spacing.cc (extremal_break_aligned_grob): destill
+       function from next_notes_correction().
+       (bar_y_positions): idem.
+
+2002-03-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * input/regression/break.ly (texidoc): bugfix: escape \ in
+       strings.
+
+       * lily/staff-spacing.cc (next_notes_correction): Correct the
+       spacing of a note following a barline.
+
+
+2002-03-04  Glen Prideaux
+
+       * mf/feta-solfa.mf: Shaped note heads
+
+2002-03-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.37 released
+
+       * lily/key-signature-interface.cc (brew_molecule): rename from key_item
+       left-align molecule.
+       
+       * lily/break-align-interface.cc (do_alignment): completely
+       rewritten. Now it does not use Align_interface anymore, but a
+       separate routine. Like StaffSpacing, it reads space-alist from the
+       breakable grobs.  This allows you to set spacing using
+       
+       \property Staff.Clef \override #'space-alist = '(....stuff....)  
+       * lily/bar-line.cc, lily/include/bar-line.hh: change name from Bar
+       to Bar_line. Move files around as well.
+
+       * lily/time-signature.cc (time_signature): left align time signatures. 
+
+       * mf/feta-timesig.mf: Remove padding from C-style time signatures.
+       Corrections of the glyph shape C. Comments added.
+
+2002-03-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/spacing-spanner.cc: move from third-try.cc; rename
+       Third_spacing_spanner to Spacing_spanner.
+
+       * lily/staff-spacing.cc (get_spacing_params): redo prefatory
+       spacing stuff. Much cleaner now, and we prepare for neat spacing
+       tricks around bar lines and such.
+
+       * lily/third-try.cc (prune_loose_colunms): bugfix. Don't init
+       variables with themselves. (Ouch.)
+
+       * lily/span-bar.cc (brew_molecule): don't try to span bars that
+       overlap.
+
+2002-03-02  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.36
+
+       * lily/lily-guile.cc: isdir_b and isaxis_b changed to ly_axis_p,
+       ly_dir_p
+
+       * lily/music.cc (ly_get_mus_property): typechecking
+       (ly_set_mus_property): idem
+       (ly_make_music): idem
+       (ly_music_name): idem
+
+       * lily/chord.cc: use scm_reverse_x iso. gh_reverse()
+
+       * lily/note-spacing.cc (stem_dir_correction): correction for
+       same stem notes as well. 
+
+       * lily/pitch.cc (pitch_transpose): stricter typechecking
+
+       * mf/parmesan*mf: magnification fixes.
+
+       * Documentation/topdocs/INSTALL.texi: update RedHat reqs
+
+2002-03-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * buildscripts/mf-to-table.py (postfixes): Output also .ly file
+       documenting the font. (Doesn't work for parmesan at the moment)
+
+       * Documentation/user/appendices.itely (The Feta font): Add list of
+       Feta font symbols with names.
+
+       * mf/GNUmakefile ($(outdir)/lilypond.map): Generate lilypond.map
+       automatically
+
+2002-03-01  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/translator-group.cc (ly_set_trans_property): typechecking
+       (ly_get_trans_property): typechecking.
+
+       * lily/font-metric.cc (ly_text_dimension): typechecking 
+       (ly_find_glyph_by_name): idem.
+
+       * scm/bass-figure.scm (brew-complete-figure): support for
+       bracketed numbers.
+       
+       * lily/grob.cc (ly_get_paper_var): new function
+
+2002-02-28  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION (PATCH_LEVEL): 1.5.35 released.
+
+       * lily/lookup.cc (ly_bracket): Scheme function ly-bracket
+       (bracket): New function.
+
+       * lily/stem-engraver.cc (stop_translation_timestep): bugfix, unset
+       stemLeftBeamCount, stemRightBeamCount in stead of using #<undefined> 
+
+       * lily/third-try.cc (set_implicit_neighbor_columns): type checking
+       bugfix.
+
+       * lily/span-arpeggio-engraver.cc (stop_translation_timestep):
+       typecheck bugfix. 
+
+       * lily/grob.cc (ly_get_grob_property): be anal about types.
+       (ly_set_grob_property): idem
+
+       * lily/figured-bass-engraver.cc (process_music): move molecule
+       building completely to Scheme
+
+       * lily/include/musical-request.hh (class Bass_figure_req): Add
+       class. 
+
+       * lily/parser.yy (bass_figure): add support for space figure.
+
+       * lily/molecule.cc (ly_molecule_combined_at_edge): be anal about types 
+
+       * lily/font-metric.cc (ly_text_dimension): Scheme function ly-text-dimension
+
+       * lily/molecule.cc (ly_fontify_atom): new function ly-fontify-atom
+       (ly_align_to_x): new function ly-align-to!
+
+       * lily/font-interface.cc (ly_font_interface_get_font): new Scheme
+       function ly-get-font
+
+       * mf/feta-nummer.mf: include normal-space dimension. 
+
+       * lily/collision.cc (check_meshing_chords): don't merge collisions
+       with whole notes.
+       
+       * lily/system-start-delimiter.cc (after_line_breaking): Bugfix:
+       glyph is string.
+
+2002-02-28  Mats Bengtsson  <matsb@s3.kth.se>
+
+       * scm/tex.scm, scm/ps.scm (or): Bugfix, ps output with Guile 3.4
+
+2002-02-28  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * mf/parmesan-heads.mf: bugfix: mensural note heads  (WARNING:
+       font changed)
+
+       * scm/output-lib.scm: bugfix: resort to neo_mensural chars rather
+       than mensural chars
+
+       * mf/parmesan-scripts.mf, mf/parmesan-generic.mf,
+       scm/grob-description.scm: added mensural fermata symbol
+
+2002-02-27  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.34 released.
+
+       * lily/rest-engraver.cc (create_grobs): rests can have pitches.
+
+       * lily/staff-symbol-referencer.cc (callback): assume that
+       staff-position is unset in general.
+
+       * input/regression/rest-pitch.ly: new file.
+
+       * lily/parser.yy (simple_element): rests can have pitch. Syntax:
+       a4\rest
+
+2002-02-26  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/scm-option.cc (set_lily_option): add internal-type-checks
+       as Scheme option. Run regression test by default with
+       internal-type-checking.
+
+       * lily/separating-group-spanner.cc (find_musical_sequences):  removed.
+
+       * lily/lily-guile.cc (type_check_assignment): changed functions.
+
+       * scm/*description*.scm: be anal about typechecks. Some changes
+       for internal variable names.
+
+2002-02-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * scm/ps.scm: -f ps  output for GUILE 1.4 and 1.3.4
+
+2002-02-25  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.33 released.
+
+       * mf/feta-macros.mf (flare_path): removed draw_flare, replace by
+       flare_path everywhere (c-clef, numbers).        
+
+       * lily/bar-number-engraver.cc (process_music): also print bar
+       number if measure starts with grace note.       
+
+       * input/regression/grace-bar-number.ly: new test.
+
+2002-02-24  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/figured-bass-engraver.cc (stop_translation_timestep): reset
+       rest as well.
+
+       * scm/music-functions.scm (voicify-music):  split chords into
+       different voices automatically.
+
+       * lily/music.cc (ly_music_list_p): new function
+
+       * lily/music-sequence.cc (do_relative_octave): robustification
+
+       * scm/music-functions.scm: many utility functions 
+
+       * lily/music.cc (ly_set_mus_property): add type checks to the
+       Scheme property assignment.
+
+       * buildscripts/lilypond-profile,lilypond-login.sh (TEXCONFIG):
+       dvips fixes
+
+       * mf/lilypond.map: .map file from Mats' page. 
+
+2002-02-21  Juergen Reuter <reuter@ipd.uka.de>
+
+       * Some more parmesan related fixes;
+
+       * Custos: varying shape (in particular, stem length), depending on the
+         vertical position of the custos (on staffline / between stafflines);
+
+       * Custos: added grob property "neutral-direction" (same semantics as
+         with stem); introduced new grob property "neutral-position";
+
+       * Time-signature: print a warning when resorting to default layout.
+
+2002-02-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/translator-group.cc (add_fresh_simple_translator): remove
+       function; initialize() is called through
+       Translator_group::initialize().
+
+       * lily/third-try.cc (prune_loose_colunms): add constraints (rods)
+       for the neighbors of a loose column.
+
+       * lily/line-of-score.cc (set_loose_columns): be more intelligent:
+       position loose columns so that they don't collide.
+
+2002-02-21  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.32 released.
+
+       * scm/font.scm: remove font-name symbol.
+
+       * mf/GNUmakefile: use pktrace for making PFAs
+
+       * make/lilypond.redhat.spec.in: use pktrace when making RPMs
+
+       * lily/rest-collision.cc (do_shift): read direction field from
+       rest-column in case of note-rest collision. This should fix some
+       problems with rest collisions.
+
+2002-02-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/note-heads-engraver.cc (process_music): Removed easyPlay
+       property.
+
+       * lily/note-head.cc (brew_ez_molecule): Remove note-character
+       property. Read pitch directly from #'cause.
+
+       * mf/feta-puntje.mf: bugfix
+
+2002-02-19  Juergen Reuter <reuter@ipd.uka.de>
+       
+       * mf/*.mf: tried to fix ancient-font.ly. WARNING: Font changed.
+
+2002-02-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/windows/compiling.texi: Update.
+
+       * Documentation/index.texi: Add link to orphaned compiling for
+       windows page.
+
+       * Documentation/footer.html.in: Comment fix.
+
+       * stepmake/bin/add-html-footer.py: Python2.[12] re workarounds.
+
+2002-02-18  Han-Wen  <hanwen@cs.uu.nl>
+       
+       * VERSION: 1.5.31 released
+
+       * lily/new-spacing-spanner.cc: remove file.
+
+       * lily/third-try.cc (do_measure): only take spacings into account
+       if they pertain to the column pair under consideration. This fixes
+       spacing bug when mixing eighths triplets and normal eighths.
+
+       * lily/note-head.cc (brew_molecule): revert ledger change: ledger
+       lines don't take up space anymore. Document why in note-head.cc
+       comment.
+
+2002-02-17  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/font-interface.cc (get_font): reinstate
+       #'font-magnification. See input/regression/font-magnification.ly
+       (get_font): Change the definition of  #'font-name grob property.
+
+       * lily/grob.cc (get_uncached_molecule): output origin for grobs
+       that have a #'cause field.
+
+2002-02-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * Documentation/topdocs/INSTALL.texi: remove type3 stuff. 
+
+       * mf/GNUmakefile:  remove metapost stuff
+
+       * stepmake/aclocal.m4: remove metapost detection stuff.
+
+2002-02-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * mf/GNUmakefile (FET_FILES): 
+       (FONT_FILES): Include parmesan.
+
+       * stepmake/bin/packagepython.py (make_assign_re): Bugfix.  Use re
+       iso regex, regsub
+
+       * buildscripts/clean-fonts.sh (FILES): Clean parmesan too.
+
+       * Documentation/user/refman.itely (Paper size): Quote braces.
+
+2002-02-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * stepmake/aclocal.m4: fixed bison version check to be more
+       robust.
+
+       * lily/stem.cc (position_noteheads): fix for cluster chords.
+
+       * mf/*.mf: many blotting/pixel rounding fixes  by Rune Zedeler
+
+       * python 2.2 support.
+
+2002-02-04  Han-Wen  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.30 released
+
+       * lily/dynamic-engraver.cc: add doco about DynamicLineSpanner
+
+       * Documentation/user/refman.itely (Dynamics): add a note about
+       DynamicLineSpanner.
+
+       * scm/grob-description.scm: add a 'translator-type?  object
+       property, so that \property Foo.Bar =\turnOff doesn't cause
+       type check warning.
+
+       * lily/translator-group.cc (add_fresh_group_translator): make
+       new add-translator functions to make distinction between fresh and
+       used group-translators. Fixes problem with scripts on auto-changing voice 
+
+       * lily/timing-engraver.cc: make Timing_engraver instantiatable,
+       add to Score_performer. Fixes bar checks in MIDI
+
+       * lily/tie-engraver.cc (create_grobs): Use pitches to compare note
+       heads. Fixes many quirks with ties.
+
+       * lily/engraver.cc (announce_grob): Use SCM argument. Store cause
+       in the grob property #'cause, instead of using Grob_info.
+
+       * ly/engraver-init.ly (StaffContext): move Dot_column_engraver to
+       staff context, fixing dot alignment on collisions.
+
+       * lily/beam-engraver.cc (try_music): remove can't find beam start
+       warning, so that skipTypesetting won't complain.
+
+2002-02-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * Documentation/user/refman.itely (Paper size): Documentation fix,
+       papersize
+
+       * lily/text-engraver.cc: Bugfix: textNonEmpty works again
+
+       * scm/grob-description.scm: \breathe: Use feta font comma by default
+
+2002-01-23  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * input/template/piano-dynamics.ly (pedal): Simplified
+
+2002-01-18  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
+
+       * ly/engraver-init.ly: avoid warnings on \skip in lyrics
+
+2002-01-10  Mats Bengtsson  <matsb@s3.kth.se>
+
+       * lilypond-mode.el (LilyPond-command-query): ignore case.
+
+2002-02-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.29 released
+
+       * all files: change 2001 to 2002 in headers globally
+
+       * mf/parmesan20.mf: split out ancient notation into parmesan ("old
+       cheese") font. WARNING: fonts changed.
+       
+2002-02-01  Juergen Reuter <reuter@ipd.uka.de>
+
+       * mf/*.mf: Fixed some blot_diameter related flaws in some feta symbols
+       
+       * mf/*.mf: Added some more vaticana/solesmes style font symbols
+       
+       * mf/*.mf: Bugfix: renamed subbipunctum -> inclinatum
+
+       * mf/*.mf: Fixed a few typos in various .mf files
+
+2002-01-17 Rune Zedeler <rune@zedeler.dk>
+       
+       * mf/: added macro soft_penstroke
+       
+              softened some glyphs
+              redrawn triangular noteheads
+              redrawn tab-clef
+              added classical quarter rest
+       
+       * lily/stem.cc: Bugfix: Stem-attachment when staff_space!=1
+       * lily/bar.cc: Bugfix: repeat dots when even number of staff
+       lines and staff_space>=2
+       * lily/rest.cc: Use default rests when current style glyphs not
+       found - this allows
+       \property Staff.Rest \override #'style = #'classical
+
+2002-01-30  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/bugs/first-tie.ly: New file.
+
+       * input/bugs/spacing-clash.ly: New file.
+
+2002-01-29  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * po: regenerate.
+
+2002-1-24 Chris Jackson <chris@fluffhouse.org.uk>
+
+       * lilypond-indent.el: New file providing indentation for
+       parenthesised blocks of lilypond code in Emacs
+       
+       * lilypond-font-lock.el: Changes to the syntax table to facilitate
+       indentation and handle block comments properly. Distinguish
+       accents from close-brackets in fontification.
+
+       * lilypond-mode.el: LilyPond-indent-command set appropriately.
+
+2002-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * Documentation/windows/installing.texi: 
+       * Documentation/windows/compiling.texi: Include from 1.4.10.
+
+       * Documentation/windows/gs-profile.sh: previously lily-gs.sh
+
+       * input/bugs/first-midi-tie.ly: New file.
+
+2001-12-29  Han-Wen  <hanwen@cs.uu.nl>
+       
+       * VERSION: 1.5.28 released
+
+        * lily/parser.yy (My_lily_parser): Slightly kludgy warning for
+        illicit beams on [c4 c4] etc.
+
+        * lily/bar-check-iterator.cc (Bar_check_iterator): new
+        file. Make separate iterator for Bar_checks. Bar_check now happen
+        outside engravers, meaning that you can use them with
+        skipTypesetting. Associated changes in other files.
+        
+        * lily/new-spacing-spanner.cc (stem_dir_correction): removed
+        function
+        
+        * lily/spacing-spanner.cc (stem_dir_correction): removed function
+
+        * lily/include/grob.hh (unsmob_item, unsmob_spanner): Add functions
+
+        * lily/bar.cc (before_line_breaking): remove bar-line spacing code.
+
+        * lily/stem.cc (set_spacing_hints): removed function
+
+        * lily/note-spacing.cc (stem_dir_correction): new stem-direction
+        correction for spacing; now take vertical extents of the stem into
+        account.  
+
+        * lily/third-try.cc: More hacking to get spacing working.
+
+        * lily/note-spacing-engraver.cc: new file, Note_spacing_engraver
+        sits at staff level and creates note spacing objects. Scrap it
+        again, and document why.
+
+        * lily/include/group-interface.hh: rename functions. 
+
+2001-12-27  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * stepmake/stepmake/c++-rules.make:
+       * stepmake/stepmake/c-rules.make: Fixes for bison-1.28.
+
+2001-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * make/lilypond-vars.make: 
+       * scripts/ly2dvi.py (setup_environment): 
+       * scripts/lilypond-book.py (setup_environment): Also set tex
+       memory options.
+
+2001-12-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.27 released.
+
+       * Documentation/user/refman.itely (Bar numbers): added bar number
+       documentation.
+
+       * scm/font.scm (make-style-sheet): Fixes to make staff-sizes work
+       again.
+
+2001-12-22  Mats Bengtsson  <matsb@s3.kth.se>
+
+       * tex/lilyponddefs.tex: Make sure interscorelinefill=1 doesn't
+       spread the last few lines all over the last page of a score.
+
+2001-12-24  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/third-try.cc: 3rd try at revising spacing
+       engine. Not yet finished.
+
+       * lily/paper-column.cc (brew_molecule): print debugging marks on a
+       paper-column.
+
+       * lily/tie-engraver.cc (class Tie_engraver): Use busyGrobs for
+       collecting past note heads.
+
+       * lily/note-heads-engraver.cc (try_music): Remove end_mom_
+       stuff.
+
+       * lily/grob-pq-engraver.cc (class Grob_pq_engraver): New file, new
+       class. Keep a queue of grobs that are still playing in busyGrobs. 
+
+       * lily/lyric-combine-music-iterator.cc (get_busy_status): New
+       function. Use busyGrobs to detect playing notes.
+       
+2001-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>
+       * Documentation/topdocs/INSTALL.texi: Added note about broken
+       python-2.1.  Updated note for Debian's broken (well, broken for
+       our use anyway) tex configuration.
+       
+       * scripts/lilypond-book.py (re_dict): python2.2 fix.
+       
+       * stepmake/stepmake/c++-rules.make ($(outdir)/%.hh): 
+       ($(outdir)/%.cc): Adapted to bison-1.30; added bison < 1.30 fix.
+       
+       * scripts/lilypond-book.py (bounding_box_dimensions): Bugfix.
+       (But left margin of png's still misses a few pixels.  Arg.)
+       
+2001-12-16  Heikki Junes  <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el (LilyPond-command-next-midi): Make
+       possible to kill midi-process (using "C-c C-m").
+
+2001-12-14  Han-Wen  <hanwen@cs.uu.nl>
+
+       * scripts/lilypond-book.py (LatexPaper.set_geo_option):
+       Convert strings with dimensions to numbers.
+
+       * lily/volta-engraver.cc:  only make a  bracket for the top staff,
+       as found in stavesFound. 
+
+       * lily/bar-number-engraver.cc: remove staff administration. 
+
+       * lily/mark-engraver.cc (acknowledge_grob): remove staff
+       administration. This breaks support for invisible-staff.
+
+       * lily/staff-collecting-engraver.cc: new engraver. Collects staff
+       symbols into stavesFound.
+
+       * lily/score-engraver.cc (acknowledge_grob): Acknowledge spacing
+       grobs, and put them into columns.
+
+       * lily/engraver-group-engraver.cc (acknowledge_grobs): Include the
+       Engraver_group_engraver as a potential candidate for ack'ing grobs.
+
+2001-12-13  Heikki Junes  <hjunes@cc.hut.fi>
+
+       * lilypond-mode.el (LilyPond-command-next-midi): Play next (or last)
+       midi section in the Emacs-mode, so it is possible to play certain
+       score in a multiscore lilypond-file.
+        
+2001-12-09  Rune Zedeler  <rune@zedeler.dk>
+       * lily/lily-guile.cc: Added ly_assoc_front_x() and ly_assoc_cdr()
+       (FIXME: not accessible from guile)
+       
+       * lily/accidental-engraver.cc: rewrote accidental-routines to get
+       better support for Kurt Stone's suggestions.
+       Removed properties: noResetKey, forgetAccidentals, autoReminders,
+                           lazyKeySignature.
+       Changed property:   localKeySignature.
+       Added properties:   extraNatural, autoAccidentals,
+                           autoCautionaries.
+
+       (BUGFIX: broken-tie-support destroyed in 1.5.16)
+       
+       * ly/property-init.ly: added commands
+       \defaultAccidentals \modernAccidentals \modernCautionaries
+       \noResetKey \forgetAccidentals
+
+       * ly/engraver-init.ly: Correct initialization of new accidentals.
+       
+       * scm/translator-property-description.scm: The new properties
+       added.
+       
+       * input/: Some examples added, some changed.
+       
+       * Documentation/regression-test.tely: Added quick test of new
+       accidentals.
+
+2001-12-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * scripts/lilypond-book.py (scan_latex_preamble): don't crash if
+       header not found
+
+2001-12-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (before_line_breaking): Make beams  without stems
+       or with only one stem disappear.
+
+2001-12-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * bibtools/bib2html.py: Add simple bib2html convertor, and .bst
+       files to have standardised HTML bibliography output. Update build
+       docs to reflect this.
+
+       * lily/include/simple-spacer.hh (struct Simple_spacer): add
+       active_count_, so that we don't have to look for active springs
+       anymore.
+
+       * scm/interface-description.scm,scm/grob-property-description.scm:
+       Add 'penalty
+
+       * lily/simple-spacer.cc (solve): Handle forced line breaks
+       here. Fixes problems when combining linebreaks with non-fitting
+       line configurations
+
+2001-12-05  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * 1.4.9.jcn3 forward ports.
+       
+       * Really included .cvsignore.
+
+       * Included Han-Wen's uu1 windows fixes.
+
+       * Bugfix: lilypond-profile.sh: append to GS_FONTPATH, GS_LIB.
+
+       * Added Cygwin setup.hint
+
+       * Removed tex, python wrappers and postinstalls to go with Cywgin's
+       tetex/texmf, python installations.
+
+       * Updated cygwin installer.
+
+       * ly2dvi: Don't accept filenames with spaces (+ fix).
+
+2001-12-03  Han-Wen  <hanwen@cs.uu.nl>
+
+       * ly/engraver-init.ly (VoiceContext): fix text engraver ordering.
+
+       * lily/translator-def.cc: Remove manual symbol caching.
+
+       * lily/script-column.cc (before_line_breaking): robustness check:
+       don't crash if no direction set.
+
+       * scripts/pmx2ly.py: Key and clef change support (Laura Conrad)
+
+       * scripts/pmx2ly.py (Parser.parse_header): more generic header
+       parsing.
+
+
+2001-12-01  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/note-head.cc (head_extent): added to compute width without
+       ledger lines. By default, ledger lines take up width now.
+
+       * input/regression/fingering.ly: demonstrate auto fingering.
+       Horizontal placement is still buggy. 
+       
+       * lily/fingering-engraver.cc (class Fingering_engraver):
+       added. Provides support for horizontal fingering scripts
+
+       * lily/include/grob.hh: Naming: change parent_l() into get_parent()
+
+       * lily/side-position-interface.cc (add_staff_support): add staff
+       only for Y-axis side positions.
+
+       * lily/parser.yy (request_chord): Fix mem leak.
+
+       * lily/musical-request.cc (transpose): moved to Music::transpose()
+
+       * lily/include/grob-info.hh: Change music pointer to SCM, so we
+       can store grobs as grob-creation cause as well.
+
+       * lily/group-interface.cc (add_thing): efficiency tweak: reuse
+       handle when adding. Use precomputed symbols throughout lily.
+       
+       * lily/rhythmic-column-engraver.cc: make NoteSpacing grobs to keep
+       track of spacing issues.
+
+       * lily/separating-line-group-engraver.cc: make StaffSpacing grobs
+       to keep track of staff spacing
+
+2001-11-30  Jan Nieuwenhuizen <janneke@gnu.org>
+
+       * Rewrote new conditional guile >= 1.5 compilation switches, to keep
+         code clean from conditionals and have a concentrated sets of
+         compatibility fixes for old guile versions.
+
+       * Fixes for guile 1.4, including embedded ps.
+
+2001-11-30  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/stanza-number-engraver.cc (process_music): allow pairs as
+       well for markup texts.
+
+       * lily/musical-request.cc (length_mom): kludge for null pointer.
+
+       * scm/sketch.scm (sketch-output-expression): guile 1.4 compatibility
+
+       * scm/lily.scm (sign): bugfix
+
+       * CHANGES: Change log instated.
+
+       * stepmake/add-html-footer.py: @BRANCH@ tag insertion.
+
index a15216cd98566dba1d68cb51c9318ec38343bcc2..2c6c702be9a5436d57c0a25b574fc5b1efc2049f 100644 (file)
@@ -4,7 +4,7 @@ NAME = documentation
 
 STEPMAKE_TEMPLATES=documentation  texinfo
 
-TEXTS =AIMS $(wildcard CHANGES-*[0-9])  $(wildcard ANNOUNCE-*[0-9]) $(wildcard NEWS-*[0-9]) interview fontinstallation
+TEXTS =AIMS $(wildcard CHANGES-*[0-9])  $(wildcard ANNOUNCE-*[0-9]) $(wildcard NEWS-*[0-9]) interview fontinstallation $(wildcard ChangeLog*[0-9])
 EXTRA_DIST_FILES = $(TEXTS)
 
 include $(depth)/make/stepmake.make 
index 087116b392a14caf65f04cb082bb0adb398f11a6..e28586bdc0d1a71dd26b1466f05111f920b69bd7 100644 (file)
@@ -1,4 +1,5 @@
-@node 
+@node Top, , , (dir)
+@top
 @comment  node-name,  next,  previous,  up\input texinfo @c -*-texinfo-*-
 @setfilename INSTALL.info
 @settitle INSTALL - compiling and installing GNU LilyPond
@@ -7,9 +8,6 @@
 <!--- @@WEB-TITLE@@=Installation Instructions --->
 @end html
 
-@node Top, , , (dir)
-@top
-
 @contents
 
 @chapter INSTALL - compiling and installing GNU LilyPond
@@ -672,12 +670,13 @@ LilyPond with gcc-3.1.1 you may do:
 
 @example
         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
-        CPPFLAGS=$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
+        CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
             ./configure --enable-config=gcc-3.1
         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
         make conf=gcc-3.1
 @end example
 
+This assumes that the GCC 3.1 binaries are called gcc-3.1 and g++-3.1.
 Note that this is @strong{not} fixed in Debian/unstable for flex <=
 2.5.4a-26.
 
@@ -693,6 +692,16 @@ Guile without threads (YMMV):
          guile-1.4$ ./configure --without-threads; make all install
 @end example
 
+@unnumberedsubsec OpenBSD
+
+@itemize @bullet
+@item By default, gcc on OpenBSD doesn't include
+@file{/usr/local/include} and @file{/usr/local/lib} in the system
+paths.  Depending upon where/how you installed kpathsea and other
+libraries, you may need to refer to the section ``Linking to
+kpathsea''.
+
+@end itemize
 
 @unnumberedsubsec NetBSD
 
index f09c9738e1bc2806fe0ee046c235147e2184b1c7..fc1e7726f5e5e1f2d711fb20ea72fc6772d24eb2 100644 (file)
@@ -210,3 +210,7 @@ accessed directly using text markup such as
 
 @lilypondfile{feta16list.ly}
 
+@c parmesan is too big. Apparently pythons re's choke on this.
+@c @lil ypondfile{parmesan16list.ly}
+
+
index 67bafae06f01d3064498e207aa2d92177cbee82c..eeba2e1737a3d95a077bbb5374f1ff2153c213c7 100644 (file)
@@ -316,6 +316,8 @@ generate titling:
     Name of the arranger, right flushed below the opus.
 @item instrument
     Name of the instrument, centered below the arranger
+@item dedication
+      [docme]    
 @item piece
     Name of the piece, left flushed below the instrument
 @item head
index 37a950263d42efd441f665b8f95fd5a6e60b5264..d57d5b8ec5bb0a7d8bd6d50f3f90f89e3abfae9f 100644 (file)
@@ -46,7 +46,7 @@ the incountable number of questions he answered on the mailing list,
 and Rune Zedeler for his energy in finding and fixing bugs.  Nicola
 Bernardini for inviting us to his workshop on music publishing, which
 was truly a masterclass, and Heinz Stolba and James Ingram for
-teaching us there. [wie nog meer?]
+teaching us there. 
 
 Playing and printing music is more than nice analogy: programming
 together is a lot of fun, and helping people is deeply satisfying, but
index d1f716f14de708169a8fa4c43d403e9801bbd0ed..5a3c9b057c21c0318626c9c737f8bd4fb8472ad7 100644 (file)
@@ -9,7 +9,6 @@
 
 @macro refbugs
 @strong{BUGS}
-
 @end macro
 
 
@@ -55,9 +54,9 @@ encouraged to study the tutorial first.
 @section Note entry
 @cindex Note entry
 
-The most basic forms of music are notes.  Notes on their own don't
-form valid input, but for the sake of brevity we omit @code{\score}
-blocks and @code{\paper} declarations.
+Notes constitute the most basic form of music, but they do not form
+valid input on their own. Yet for the sake of brevity and simplicity,
+we'll generally omit @code{\score} blocks and @code{\paper} declarations.
 
 
 @menu
@@ -118,7 +117,7 @@ both forms are accepted.
 LilyPond has predefined sets of note names for various other languages.
 To use them, simply include the language specific init file.  For
 example: @code{\include "english.ly"}.  The available language files and
-the names they define are:
+the note names they define are:
 
 @example 
                         Note Names               sharp       flat
@@ -150,8 +149,8 @@ octave; each @code{,} lowers the pitch by an octave.
 @node Chromatic alterations
 @subsection Chromatic alterations
 
-Normally, accidentals are printed automatically, but you may force
-accidentals in the following ways: A reminder accidental
+Normally, accidentals are automatically printed, but you may force
+them in the following ways: a reminder accidental
 @cindex reminder accidental
 @cindex @code{?}
 can be forced by adding an exclamation mark @code{!} after the pitch.  A
@@ -162,25 +161,25 @@ i.e., an accidental within parentheses can be obtained by adding the
 question mark `@code{?}' after the pitch.
 
 The automatic production of accidentals can be tuned in many
-ways. Refer to @ref{Accidentals} for more information.
+ways. For more information, refer to @ref{Accidentals}.
 
 @c .  {Rests}
 @node  Rests
 @subsection Rests
 @cindex Rests
 
-A rest is entered like a note, with note name `@code{r}':
+Rests are entered like notes, with an `@code{r}' note name:
 
 @lilypond[singleline,verbatim]
 r1 r2 r4 r8
 @end lilypond
 
-Whole bar rests centered in the bar are specified using @code{R}, see
+Whole bar rests, centered in the bar, are specified using @code{R}, see
 @ref{Multi measure rests}. See also @seeinternals{Rest}.
 
-For polyphonic music, it can be convenient to specify the rest position
-directly. You can do that by entering a note, with the keyword
-@code{\rest} appended, e.g. Rest collisions will leave these rests alone.
+For polyphonic music, it can be convenient to explicitly specify the rest's
+vertical position. This can be achieved by entering a note, with the @code{\rest}
+keyword appended. Rest collision testing will leave these rests alone.
 
 @lilypond[singleline,verbatim]
 a'4\rest d'4\rest
@@ -202,13 +201,10 @@ An invisible rest, or skip, can be entered like a note with note name
 a2 s4 a4 \skip 1 a4 
 @end lilypond
 
-The @code{s} syntax  is only available in Note mode and Chord mode. 
-In other situations, you should use the @code{\skip} command, and it is
-only available in Note mode and Chord mode.
-
-@c FIXME: in lyrics mode, we have " " and _
+@c FIXME: in Lyrics mode, we have " " and _
 
-In Lyrics mode, you can use `@code{" "}' and `@code{_}':
+In Lyrics mode, invisible rests are entered using either `@code{" "}' 
+or `@code{_}':
 @lilypond[singleline,verbatim]
 <
   \context Lyrics \lyrics { lah2 di4 " " dah2 _4 di }
@@ -216,8 +212,9 @@ In Lyrics mode, you can use `@code{" "}' and `@code{_}':
 >
 @end lilypond
 
-The unabbreviated `@code{\skip} @var{duration}' also works outside of
-note mode:
+Note that the @code{s} syntax  is only available in Note mode and Chord
+mode. In other situations, you should use the @code{\skip} command, which
+also works outside of those two modes:
 
 @lilypond[singleline,verbatim]
 \score {
@@ -228,10 +225,11 @@ note mode:
 }
 @end lilypond
 
-The skip command is merely a empty musical placeholder. It does not
+The skip command is merely an empty musical placeholder. It doesn't
 produce any output, not even transparent output.
 
 
+
 @c .  {Durations}
 @node Durations
 @subsection Durations
@@ -241,7 +239,7 @@ produce any output, not even transparent output.
 @cindex @code{\duration}
 
 
-In Note, Chord, and Lyrics mode, durations may be designated by numbers
+In Note, Chord, and Lyrics mode, durations are designated by numbers
 and dots: durations are entered as their reciprocal values.  For notes
 longer than a whole you must use identifiers.
 
@@ -274,10 +272,10 @@ r1 r2 r4 r8 r16 r32 r64 r64
 @end lilypond
 
 
-If the duration is omitted then it is set to the previous duration
-entered.  At the start of parsing a quarter note is assumed.  The
-duration can be followed by dots (`@code{.}')  to obtain dotted note
-lengths.
+If the duration is omitted then it is set to the previously entered
+duration.  At the start of parsing, a quarter note is assumed.  The
+duration can be followed by dots (`@code{.}') in order to obtain dotted
+note lengths:
 @cindex @code{.}
 
 @lilypond[fragment,verbatim,center]
@@ -286,9 +284,9 @@ lengths.
 @cindex @code{r}
 @cindex @code{s}
 
-You can alter the length of duration by a fraction @var{N/M} by
+You can alter the length of duration by a fraction @var{N/M}
 appending `@code{*}@var{N/M}' (or `@code{*}@var{N}' if @var{M=1}). This
-will not affect the appearance of the notes or rests produced.
+won't affect the appearance of the notes or rests produced.
 
 Durations can also be produced through GUILE extension mechanism. 
 @lilypond[verbatim,fragment]
@@ -312,19 +310,20 @@ Dot placement for chords is not perfect.  In some cases, dots overlap:
 @cindex @code{~}
 
 A tie connects two adjacent note heads of the same pitch.  The tie in
-effect extends the length of a note. A tie is entered with @code{~}.
+effect extends the length of a note. Ties should not be confused with
+slurs, which indicate articulation, and phrasing slurs, which indicate
+musical phrasing. A tie is entered using the tilde symbol `@code{~}'.
 
 @lilypond[fragment,verbatim,center]
   e' ~ e' <c' e' g'> ~ <c' e' g'>
 @end lilypond
 
-When ties are used with chords, all note heads whose pitches match are
-connected.  Ties are indicated using the tilde symbol `@code{~}'.  If
-you try to tie together chords which have no common pitches then no
-ties will be created.
+When a tie is applied to a chord, all note heads, whose pitches match, are
+connected.  If you try to tie together chords that have no common pitches,
+no ties will be created.
 
-If you want less  ties created for a chord, you can  set
-@code{Voice.sparseTies} to true. In this case, a single tie is used
+If you want less ties created for a chord, you can set
+@code{Voice.sparseTies} to true.  In this case, a single tie is used
 for every tied chord.
 @lilypond[fragment,verbatim,center]
   \property Voice.sparseTies = ##t
@@ -338,8 +337,8 @@ exactly the same concept.
 @lilypond[fragment, singleline]
 \time 3/4 c'2. c'2 ~ c'4
 @end lilypond
-Ties should not be confused with slurs, which indicate articulation,
-and phrasing slurs, which indicate musical phrasing.
+And if you need to tie notes over bars, it may be easier to use
+@ref{Automatic note splitting}.
 
 See also  @seeinternals{Tie}.
 
@@ -347,18 +346,18 @@ See also  @seeinternals{Tie}.
 @refbugs
 
 At present, the tie is represented as a separate event, temporally
-located in between the notes.  Tieing only a subset of the note heads
+located in between the notes.  Tying only a subset of the note heads
 of a chord is not supported in a simple way.  It can be achieved by
 moving the tie-engraver into the Thread context and turning on and off
 ties per Thread.
 
-Switching staffs when a tie is active will not work.
+Switching staves when a tie is active will not work.
 
 @node Automatic note splitting 
 @subsection Automatic note splitting
 @c FIXME: This subsection doesn't belong in @ref{Note entry}.
 
-There is a facility for automatically converting long notes to  tied
+There is a facility for automatically converting long notes to tied
 notes. This is done by replacing the @code{Note_heads_engraver} by the
 @code{Completion_heads_engraver}. 
 
@@ -391,7 +390,7 @@ represented exactly; the engraver will not insert tuplets.
 @cindex triplets
 @cindex @code{\times}
 
-Tuplets are made out of a music expression by multiplying all duration
+Tuplets are made out of a music expression by multiplying all durations
 with a fraction.
 
 @cindex @code{\times}
@@ -797,7 +796,7 @@ such as keys, clefs and time signatures.
 
 
 The lines of the staff symbol are formed by the
-@internalsref{StaffSymbol} grob.  This grob is created at the moment
+@internalsref{StaffSymbol} object.  This object is created at the moment
 that their context is created.  You can not change the appearance of
 the staff symbol by using @code{\override} or @code{\set}.  At the
 moment that @code{\property Staff} is interpreted, a Staff context is
@@ -846,7 +845,7 @@ This command sets the context property @code{Staff.keySignature}.
 Non-standard key signatures can be specified by setting this property
 directly.
 
-The printed signature is a @internalsref{KeySignature} grob, typically
+The printed signature is a @internalsref{KeySignature} object, typically
 created in @internalsref{Staff} context.
 
 @cindex @code{keySignature}
@@ -896,7 +895,7 @@ name. For example,
        \clef "G_8"
 @end example
 
-The grob for this symbol is @internalsref{Clef}. 
+The object for this symbol is @internalsref{Clef}. 
 
 
 This command is equivalent to setting @code{clefGlyph},
@@ -923,13 +922,14 @@ property. Setting it to @code{#'()} uses fraction style for 4/4 and
 2/2 time.
 
 
-The grob for this symbol is @internalsref{TimeSignature}.  There are
+The object for this symbol is @internalsref{TimeSignature}.  There are
 many more options for its layout. They are selected through the
-@code{style} grob property. See @file{input/test/time.ly} for more
+@code{style} object property. See @file{input/test/time.ly} for more
 examples.
 
 This command sets the property @code{timeSignatureFraction},
-@code{beatLength} and @code{measureLength}.  The property
+@code{beatLength} and @code{measureLength} in the @code{Timing}
+context, which is normally aliased to @internalsref{Score}.  The property
 @code{timeSignatureFraction} determine where bar lines should be
 inserted, and how automatic beams should be generated.  Changing the
 value of @code{timeSignatureFraction} also causes a time signature
@@ -957,7 +957,7 @@ The syntax for this command is
 @end example
 This is  internally translated into
 @example
-  \property Score.measurePosition = -@var{length of duration}
+  \property Timing.measurePosition = -@var{length of duration}
 @end example
 @cindex @code{|}
 The property @code{measurePosition} contains a rational number
@@ -1013,8 +1013,8 @@ c4
 You are encouraged to use @code{\repeat} for repetitions.  See
 @ref{Repeats}.
 
-In scores with many staffs, the barlines are automatically placed at
-top level, and they are connected between different staffs of a
+In scores with many staves, the barlines are automatically placed at
+top level, and they are connected between different staves of a
 @internalsref{StaffGroup}:
 @lilypond[fragment, verbatim]
 < \context StaffGroup <
@@ -1025,7 +1025,7 @@ top level, and they are connected between different staffs of a
 \context Staff = pedal { \clef bass c2 c2 } >
 @end lilypond
 
-The grobs that are created at @internalsref{Staff} level. The name is
+The objects that are created at @internalsref{Staff} level. The name is
 @internalsref{BarLine}.
 
 The command @code{\bar @var{bartype}} is a short cut for
@@ -1103,7 +1103,7 @@ horizontal shifts and stem directions, as is shown  in the following example:
 
 
 Normally, note heads with a different number of dots are not merged, but
-if you set the grob property @code{merge-differently-dotted}, they are:
+if you set the object property @code{merge-differently-dotted}, they are:
 @lilypond[verbatim,fragment,singleline]
 \context Voice < {
      g'8 g'8 
@@ -1136,7 +1136,7 @@ See also @internalsref{NoteCollision} and @internalsref{RestCollision}
 
 Resolving collisions is a very intricate subject, and LilyPond only
 handles a few situations. When it can not cope, you are advised to use
-@code{force-hshift} of the @internalsref{NoteColumn} grob and pitched
+@code{force-hshift} of the @internalsref{NoteColumn} object and pitched
 rests to override typesetting decisions.
 
 @node Beaming
@@ -1221,7 +1221,7 @@ same effect as twiddling with @code{stemLeftBeamCount} and
 
 Kneed beams are inserted automatically, when a large gap between two
 adjacent beamed notes is detected. This behavior can be tuned through
-the grob property @code{auto-knee-gap}.
+the object property @code{auto-knee-gap}.
 
 @cindex beams, kneed
 @cindex kneed beams
@@ -1234,7 +1234,7 @@ the grob property @code{auto-knee-gap}.
 
 @refbugs
 
-Auto knee beams can not be used together with hara kiri staffs.
+Auto knee beams can not be used together with hara kiri staves.
 
 [TODO from bugs]
 
@@ -1615,7 +1615,7 @@ See also @seeinternals{Slur}.
 Slurs avoid crossing stems, and are generally attached to note heads.
 However, in some situations with beams, slurs may be attached to stem
 ends.  If you want to override this layout you can do this through the
-grob-property @code{attachment} of @internalsref{Slur} in
+object property @code{attachment} of @internalsref{Slur} in
 @internalsref{Voice} context It's value is a pair of symbols, specifying
 the attachment type of the left and right end points.
 
@@ -1642,7 +1642,7 @@ stems might look better:
 Similarly, the curvature of a slur is adjusted to stay clear of note
 heads and stems.  When that would increase the curvature too much, the
 slur is reverted to its default shape.  The threshold for this
-decision is in @internalsref{Slur}'s grob-property @code{beautiful}.
+decision is in @internalsref{Slur}'s object property @code{beautiful}.
 It is loosely related to the enclosed area between the slur and the
 notes.  Usually, the default setting works well, but in some cases you
 may prefer a curved slur when LilyPond decides for a vertically moved
@@ -1688,8 +1688,15 @@ respectively.
 @end lilypond
 
 Typographically, the phrasing slur behaves almost exactly like a normal
-slur. See also  @seeinternals{PhrasingSlur}.
+slur.  See also @seeinternals{PhrasingSlur}.  But although they behave
+similarily to normal slurs, phrasing slurs count as different objects.
+A @code{\slurUp} will have no effect on a phrasing slur; instead, you
+should use @code{\phrasingSlurUp}, @code{\phrasingSlurDown}, and
+@code{\phrasingSlurBoth}.
 
+Note that the commands
+@code{\slurUp}, @code{\slurDown}, and @code{\slurBoth} will only affect
+normal slurs and not phrasing slurs.
 
 @node Breath marks
 @subsection Breath marks
@@ -1739,9 +1746,9 @@ is as follows:
 \spanrequest \start "text"
 \spanrequest \stop "text"
 @end example
-LilyPond will respond by creating a @internalsref{TextSpanner} grob (typically
+LilyPond will respond by creating a @internalsref{TextSpanner} object (typically
 in @internalsref{Voice} context).  The string to be printed, as well as the
-style is set through grob properties.
+style is set through object properties.
 
 An application---or rather, a hack---is to fake octavation indications.
 @lilypond[fragment,relative,verbatim]
@@ -1922,7 +1929,7 @@ exact length of the string, which may lead to collisions.  Also, @TeX{}
 commands won't work with direct PostScript output.
 @c (see @ref{PostScript output}).
 
-Text scripts are created in form of @internalsref{TextScript} grobs, in
+Text scripts are created in form of @internalsref{TextScript} objects, in
 @internalsref{Voice} context. 
 
 @ref{Text markup} describes how to change the font or access
@@ -1939,9 +1946,9 @@ special symbols in text scripts.
 @cindex ornaments
 @cindex grace notes
 
-Grace notes are ornaments  are written out ornaments
-@lilypond[relative=2,verbatim,ifragment] 
-  c4  \grace c16  c4 \grace { [c16 d16] } c4 
+Grace notes are ornaments that are written out
+@lilypond[relative=2,verbatim,ifragment] c4 \grace c16 c4 \grace {
+[c16 d16] } c4
 @end lilypond
 
 In normal notation, grace notes are supposed to take up no logical
@@ -1972,7 +1979,7 @@ changes may appear halfway in between grace notes:
 @end lilypond
 
 The placement of these grace notes is synchronized between different
-staffs, using this grace timing.
+staves, using this grace timing.
 
 @lilypond[relative=2,verbatim,fragment] 
 < \context Staff = SA { e4 \grace { c16 d e f } e4 }
@@ -1981,13 +1988,17 @@ staffs, using this grace timing.
 
 
 Unbeamed eighth notes and shorter by default have a slash through the
-stem. This can be controlled with grob property @code{flag-style} of
+stem. This can be controlled with object property @code{flag-style} of
 @internalsref{Stem}. The change in formatting is accomplished by
 inserting @code{\startGraceMusic} before handling the grace notes, and
 @code{\stopGraceMusic} after finishing the grace notes. You can add to
 these definitions to globally change grace note formatting. The
 standard definitions are in @file{ly/grace-init.ly}.
 
+Notice how the @code{\override} is carefully matched with a @code{\revert}.
+
+@cindex slash
+@cindex grace slash
 
 @lilypond[fragment,verbatim]
 \relative c'' \context Voice {
@@ -2000,6 +2011,8 @@ standard definitions are in @file{ly/grace-init.ly}.
 }
 @end lilypond
 
+
+
 If you want to end a note with a grace note, then the standard trick
 is to put the grace notes before a phantom ``space note'', e.g.
 @lilypond[fragment,verbatim, relative=2]
@@ -2010,12 +2023,39 @@ is to put the grace notes before a phantom ``space note'', e.g.
 }
 @end lilypond
 
+A @code{\grace} section has some default values, and LilyPond will
+use those default values unless you specify otherwise inside the
+@code{\grace} section.  For example, if you specify \slurUp
+@emph{before} your @code{\grace} section, a slur which starts inside
+the @code{\grace} won't be forced up, even if the slur ends outside
+of the @code{\grace}.  Note the difference between the first and
+second bars in this example:
+
+@lilypond[fragment,verbatim]
+\relative c'' \context Voice {
+    \slurUp
+    \grace {
+        a4 ( }
+    ) a4 a4 () a2
+    \slurBoth
+
+    \grace {
+        \slurUp
+        a4 ( }
+    ) a4 a4 () a2
+    \slurBoth
+
+}
+@end lilypond
+
 
 @refbugs
 
+Grace notes can not be used in the smallest size (@file{paper11.ly}).
+
 Grace note synchronization can also lead to surprises. Staff notation,
 such as key signatures, barlines, etc. are also synchronized. Take
-care when you mix staffs with grace notes and staffs without.
+care when you mix staves with grace notes and staves without.
 
 @lilypond[relative=2,verbatim,fragment]
 < \context Staff = SA { e4 \bar "|:" \grace c16 d4 }
@@ -2027,14 +2067,7 @@ expressions.  Nesting, juxtaposing, or ending sequential music with a
 grace section is not supported, and might produce crashes or other
 errors.
 
-@menu
-* Glissando ::                  
-* Dynamics::                    
-@end menu
 
-
-
-@c .   {Glissando}
 @node Glissando 
 @subsection Glissando
 @cindex Glissando 
@@ -2137,11 +2170,11 @@ You can also supply your own texts:
 
 @cindex diminuendo
 
-Dynamics are grobs of @internalsref{DynamicText} and
+Dynamics are objects of @internalsref{DynamicText} and
 @internalsref{Hairpin}. Vertical positioning of these symbols is
-handled by the @internalsref{DynamicLineSpanner} grob.  If you want to
+handled by the @internalsref{DynamicLineSpanner} object.  If you want to
 adjust padding or vertical direction of the dynamics, you must set
-properties for the @internalsref{DynamicLineSpanner} grob. Predefined
+properties for the @internalsref{DynamicLineSpanner} object. Predefined
 identifiers to set the vertical direction are \dynamicUp and
 \dynamicDown.
 
@@ -2285,9 +2318,9 @@ command can be
 @item 'end-repeat
  Print a :| bar line
 @item (volta . @var{text})
 Print a volta bracket saying @var{text}.
+ Print a volta bracket saying @var{text}.
 @item (volta . #f)
 Stop a running volta bracket
+ Stop a running volta bracket
 @end table
 
 @lilypond[verbatim, fragment]
@@ -2299,7 +2332,7 @@ command can be
 @end lilypond
 
 
-Repeats brackets are @internalsref{VoltaBracket} grobs.
+Repeats brackets are @internalsref{VoltaBracket} objects.
 
 @node Tremolo repeats
 @subsection Tremolo repeats
@@ -2318,7 +2351,7 @@ style.
 }
 @end lilypond
 
-Tremolo beams are @internalsref{Beam} grobs. Single stem tremolos are
+Tremolo beams are @internalsref{Beam} objects. Single stem tremolos are
 @internalsref{StemTremolo}. The single stem tremolo @emph{must} be
 entered without @code{@{} and @code{@}}.  
 
@@ -2364,7 +2397,7 @@ patterns that divide the measure length are replaced by slashes.
 }
 @end lilypond   
 
-The signs are represented by these grobs: @internalsref{RepeatSlash} and
+The signs are represented by these objects: @internalsref{RepeatSlash} and
 @internalsref{PercentRepeat} and @internalsref{DoublePercentRepeat}.
 
 @refbugs
@@ -2769,7 +2802,7 @@ Sustain, Sostenuto or UnaCorda.  Refer to the generated documentation of
 @rgrob{SustainPedal}, for example, for more information.
 
 Pedals can also be indicated by a sequence of brackets, by setting the 
-@code{pedal-type} property of SustainPedal grobs: 
+@code{pedal-type} property of SustainPedal objects: 
 
 @lilypond[fragment,verbatim]
 \property Staff.SustainPedal \override #'pedal-type = #'bracket
@@ -2798,7 +2831,7 @@ c''4 \sostenutoDown d''4 e''4 c'4 f'4 g'4 a'4 \sostenutoUp
 
 For fine-tuning of the appearance of a pedal bracket, the properties
 @code{edge-width}, @code{edge-height}, and @code{shorten-pair} of
-@code{PianoPedalBracket} grobs (see the detailed documentation of
+@code{PianoPedalBracket} objects (see the detailed documentation of
 @rgrob{PianoPedalBracket}) can be modified.  For example, the bracket
 may be extended to the end of the note head.
 
@@ -2839,11 +2872,11 @@ to the chords in both staves, and set
   >  
 @end lilypond
 
-This command creates @internalsref{Arpeggio} grobs.  Cross staff arpeggios
+This command creates @internalsref{Arpeggio} objects.  Cross staff arpeggios
 are @code{PianoStaff.Arpeggio}.
 
 To add an arrow head to explicitly specify the direction of the
-arpeggio, you should set the arpeggio grob property
+arpeggio, you should set the arpeggio object property
 @code{arpeggio-direction}.
 
 @lilypond[fragment,relative,verbatim]
@@ -2858,7 +2891,7 @@ arpeggio, you should set the arpeggio grob property
 A square bracket on the left indicates that the player should not
 arpeggiate the chord. To draw these brackets, set the
 @code{molecule-callback} property of @code{Arpeggio} or
-@code{PianoStaff.Arpeggio} grobs to @code{\arpeggioBracket}, and use
+@code{PianoStaff.Arpeggio} objects to @code{\arpeggioBracket}, and use
 @code{\arpeggio} statements within the chords as before.
 
 @lilypond[fragment,relative,verbatim]
@@ -2904,16 +2937,16 @@ can be printed automatically. This is enabled if the property
   >  
 @end lilypond
 
-The associated grob is @internalsref{VoiceFollower}.
+The associated object is @internalsref{VoiceFollower}.
 
 
 @node Tablatures
 @section Tablatures
 
-Tablature notation is used music for plucked string instruments.  It
-notates pitches not by using note heads, but by indicating on which
-string and fret a note must be played.  LilyPond offers limited
-support for tablature, by abusing the fingering system.
+Tablature notation is used for notating music for plucked string
+instruments.  It notates pitches not by using note heads, but by
+indicating on which string and fret a note must be played.  LilyPond
+offers limited support for tablature.
 
 @menu
 * Tablatures basic::            
@@ -2928,24 +2961,50 @@ support for tablature, by abusing the fingering system.
 Tablature can be typeset with Lilypond by using the
 @internalsref{TabStaff} and @internalsref{TabVoice} contexts. As
 tablature is a recent feature in Lilypond, most of the guitar special
-effects such as hammer, pull, bend are not yet supported.
+effects such as bend are not yet supported.
 
 With the @internalsref{TabStaff}, the string number associated to a note
-is given though the fingering mechanism, e.g. @code{c4-3} for a C
-quarter on the third string. The string 1 is the lowest one, and the
+is given as a backslash followed by the string number, e.g. @code{c4\3} for a C
+quarter on the third string. By default, string 1 is the highest one, and the
 tuning defaults to the standard guitar tuning (with 6 strings).
 
 @lilypond[fragment,verbatim]
   \context TabStaff <
     \notes {
-      \property Staff.Stem \override #'direction = #1
-      
-      a,4-2 c'-5 a-4 e'-6
-      e-3 c'-5 a-4 e'-6
+      a,4\5 c'\2 a\3 e'\1
+      e\4 c'\2 a\3 e'\1
     }
   >  
 @end lilypond
 
+If you do not specify a string number then lilypond automatically selects one.
+The selection is controlled by the translator property @code{minimumFret}. -- LilyPond
+simply selects the first string that does not give a fret number less than
+@code{minimumFret}. Default is 0.
+
+Notice that LilyPond does not handle chords in any special way, and hence
+the automatic string selector may easily select the same string to two notes in a chord.
+
+@example
+e8 fis gis a b cis' dis' e'
+\property TabStaff.minimumFret = #8
+e8 fis gis a b cis' dis' e'
+@end example
+@lilypond
+frag = \notes {
+    \key e \major
+    e8 fis gis a b cis' dis' e'
+    \property TabStaff.minimumFret = #8
+    e8 fis gis a b cis' dis' e'
+}
+\score {
+  \context StaffGroup <
+    \context Staff { \clef "G_8" \frag }
+    \context TabStaff { \frag }
+  >
+}
+@end lilypond
+
 @node Non-guitar tablatures
 @subsection Non-guitar tablatures
 @cindex Non-guitar tablatures
@@ -2953,10 +3012,30 @@ tuning defaults to the standard guitar tuning (with 6 strings).
 There are many ways to customize Lilypond tablatures.
 
 First you can change the number of strings, by setting the number of
-lines in the @internalsref{TabStaff}.  You can change the strings
+lines in the @internalsref{TabStaff} (the @code{line-count} property
+of TabStaff can only be changed using @code{\outputproperty}, for more
+information, see @ref{Tuning per object}.  You can change the strings
 tuning. A string tuning is given as a Scheme list with one integer
 number for each string, the number being the pitch of an open string.
 
+(The numbers specified for stringTuning are the numbers of semitons
+to subtract --- or add --- starting the specified pitch by default
+middle C, in string order: thus the notes are e, a, d & g)
+
+@lilypond[fragment,verbatim]
+  \context TabStaff <
+
+    \outputproperty #(make-type-checker 'staff-symbol-interface)
+                    #'line-count = #4
+    \property TabStaff.stringTunings =  #'(-5 -10 -15 -20)
+    
+    \notes {
+      a,4 c' a e' e c' a e'
+    }
+
+  > 
+@end lilypond
+
 Finally, it is possible to change the Scheme function to format the
 tablature note text. The default is @var{fret-number-tablature-format},
 which uses the fret number, but for some instruments that may not use
@@ -3214,7 +3293,7 @@ scheme = \notes {
 By default, a chord name system proposed by Harald Banter (See
 @ref{Literature}) is used. The system is very regular and predictable.
 Typical American style chord names may be selected by setting the
-@code{style} property of the @code{ChordNames.ChordName} grob to
+@code{style} property of the @code{ChordNames.ChordName} object to
 @code{'american}. Similarly @code{'jazz} selects Jazz chordnames.
 
 Routines that determine the names to be printed are written in Scheme,
@@ -3288,7 +3367,7 @@ To print a  rehearsal mark, use the @code{\mark} command.
 
 As you can see, the mark is incremented automatically if you use
 @code{\mark \default}. The value to use is stored in the property
-@code{rehearsalMark} is used and automatically incremented.  The grob
+@code{rehearsalMark} is used and automatically incremented.  The object
 is @internalsref{RehearsalMark} in @internalsref{Score} context. See
 @code{input/test/boxed-molecule.ly} if you need boxes around the
 marks.
@@ -3330,14 +3409,36 @@ number itself is a property that can be set by modifying the
   \property Score.currentBarNumber = #217
 @end example
 
-If you want boxed bar numbers, see the example file
-@code{input/test/boxed-molecule.ly}.
+To typeset Bar Numbers at regular intervals instead of at the beginning of each line,
+you need to change the grob property @code{break-visibility} as well as the translator
+property @code{barNumberVisibility}, as illustrated in the following example which also
+adds a box around the bar numbers:
+@example
+\property Score.BarNumber \override #'break-visibility =
+  #end-of-line-invisible
+\property Score.barNumberVisibility = #(every-nth-bar-number-visible 5)
+\property Score.BarNumber \override #'molecule-callback =
+  #(make-molecule-boxer 0.1 0.25 0.25 Text_item::brew_molecule)
+\property Score.BarNumber \override #'font-relative-size = #0
+@end example
+@lilypond
+\score {
+    \context Staff \notes \transpose c''' {
+       \property Score.BarNumber \override #'break-visibility = #end-of-line-invisible
+       \property Score.barNumberVisibility = #(every-nth-bar-number-visible 5)
+       \property Score.BarNumber \override #'molecule-callback =
+       #(make-molecule-boxer 0.1 0.25 0.25 Text_item::brew_molecule)
+       \property Score.BarNumber \override #'font-relative-size = #0
+       
+       \repeat unfold 16 c1 \bar "|."
+    }
+}
+@end lilypond
 
 See also @seeinternals{BarNumber}.
 
 @refbugs
 
-Printing bar numbers at regular intervals is not implemented.
 Barnumbers can collide with the StaffGroup, if there is one at the
 top. To solve this, You have to twiddle with the
 @internalsref{padding} property of @internalsref{BarNumber} if your
@@ -3437,7 +3538,7 @@ measure.
 
 @cindex whole rests for a full measure 
 
-The grob for this object is @internalsref{MultiMeasureRest}.
+The object for this object is @internalsref{MultiMeasureRest}.
 
 @refbugs
 
@@ -3603,13 +3704,12 @@ output.
 
  To get a longa note head, you have to use mensural note heads. This
 is accomplished by setting the @code{style} property of the
-NoteHead grob to @code{mensural}. There is also a note head style
+NoteHead object to @code{mensural}. There is also a note head style
 @code{baroque} which gives mensural note heads for @code{\longa} and
 @code{\breve} but standard note heads for shorter notes.
 
 @lilypond[fragment,singleline,verbatim]
  \property Voice.NoteHead \set #'style = #'mensural
- \property Voice.NoteHead \set #'font-family = #'ancient
  a'\longa
 @end lilypond
 
@@ -3676,8 +3776,8 @@ block:
 @subsection Ancient clefs
 
 LilyPond supports a variety of clefs, many of them ancient. These can
-be selected from the @code{ancient} font family, by setting
-@code{Staff.clefGlyph}) to one of the following values
+be selected by setting @code{Staff.clefGlyph}) to one of the following
+values
 
 @table @code
 @item clefs-C
@@ -3747,7 +3847,7 @@ LilyPond has limited support for figured bass:
 The support for figured bass consists of two parts: there is an input
 mode, introduced by @code{\figures}, where you can enter bass figures
 as numbers, and there is a context called @internalsref{FiguredBass}
-that takes care of making @internalsref{BassFigure} grobs.
+that takes care of making @internalsref{BassFigure} objects.
 
 In figures input mode, a group of bass figures is delimited by
 @code{<} and @code{>}. The duration is entered after the @code{>}.
@@ -3797,34 +3897,34 @@ hands. Nevertheless, there are situations where it needs some help, or
 where you want to override its decisions. In this section we discuss
 ways to do just that.
 
-Formatting is internally done by manipulating so called grobs (graphic
-objects). Each grob carries with it a set of properties (grob
-properties) specific to that object.  For example, a stem grob has
+Formatting is internally done by manipulating so called objects (graphic
+objects). Each object carries with it a set of properties (object
+properties) specific to that object.  For example, a stem object has
 properties that specify its direction, length and thickness.
 
 The most direct way of tuning the output is by altering the values of
 these properties. There are two ways of doing that: first, you can
-temporarily change the definition of a certain type of grob, thus
+temporarily change the definition of a certain type of object, thus
 affecting a whole set of objects.  Second, you can select one specific
-object, and set a grob property in that object.
+object, and set a object property in that object.
 
 @menu
-* Tuning groups of grobs ::     
-* Tuning per grob ::            
+* Tuning groups of objects ::     
+* Tuning per object ::            
 * Font selection::              
 * Text markup::                 
 @end menu
 
-@node Tuning groups of grob
-@subsection Tuning groups of grob
+@node Tuning groups of object
+@subsection Tuning groups of object
 
-@cindex grob description
+@cindex object description
 
 
 
-A grob definition is a Scheme association list, that is stored in a
+A object definition is a Scheme association list, that is stored in a
 context property.  By assigning to that property (using plain
-@code{\property}), you can change the resulting grobs.
+@code{\property}), you can change the resulting objects.
 
 @lilypond[verbatim, fragment]
 c'4 \property Voice.Stem  = #'()
@@ -3845,11 +3945,11 @@ find this useful:
 @cindex \set
 
 This mechanism is fairly crude, since you can only set, but not modify,
-the definition of a grob. For this reason, there is a more advanced
+the definition of a object. For this reason, there is a more advanced
 mechanism.
 
-The definition of a grob is actually a list of default grob
-properties. For example, the definition of the Stem grob (available in
+The definition of a object is actually a list of default object
+properties. For example, the definition of the Stem object (available in
 @file{scm/grob-description.scm}), defines the following values for
 @internalsref{Stem}
 
@@ -3914,13 +4014,13 @@ default value:
   \set \set \set \set @var{to default value}
 @end example
 
-If there is no default (i.e. by default, the grob property is unset),
+If there is no default (i.e. by default, the object property is unset),
 then you can use
 @example
   \set \set \set \revert
 @end example
 
-For the digirati, the grob description is an Scheme association
+For the digirati, the object description is an Scheme association
 list. Since a Scheme list is a singly linked list, we can treat it as a
 stack, and @code{\override} and @code{\revert} are just push and pop
 operations. This pushing and popping is also used for overriding
@@ -3929,35 +4029,53 @@ automatic beaming settings.
 @refbugs
 
 LilyPond will hang or crash if @var{value} contains cyclic references.
-The backend is not very strict in type-checking grob properties. If you
+The backend is not very strict in type-checking object properties. If you
 @code{\revert} properties that are expected to be set by default,
 LilyPond may crash.
 
 
 
 
-@node Tuning per grob 
-@subsection Tuning per grob 
+@node Tuning per object 
+@subsection Tuning per object 
+
+Tuning a single object is most often done with @code{\property}. The
+form,
+@example
+        \once \property @dots{}
+@end example
+@c
+applies a setting only during one moment in the score: notice how the
+original setting for stem thickness is restored automatically in the
+following example
+@c
+@lilypond[verbatim, fragment, relative=1]
+  c4 
+  \once \property Voice.Stem \set #'thickness = #4
+  c4
+  c4
+@end lilypond
 
+@cindex \once
 @cindex \outputproperty
 
-A second way of tuning grobs is the more arcane @code{\outputproperty}
+A second way of tuning objects is the more arcane @code{\outputproperty}
 feature.  The syntax is as follows:
 @example
 \outputproperty @var{predicate} @var{symbol} = @var{value}
 @end example
-Here @code{predicate} is a Scheme function taking a grob argument, and
+Here @code{predicate} is a Scheme function taking a object argument, and
 returning a boolean.  This statement is processed by the
 @code{Output_property_engraver}.  It instructs the engraver to feed all
-grobs that it sees to @var{predicate}. Whenever the predicate returns
-true, the grob property @var{symbol} will be set to @var{value}.
+objects that it sees to @var{predicate}. Whenever the predicate returns
+true, the object property @var{symbol} will be set to @var{value}.
+
+This command is only single shot, in contrast to @code{\override} and
+@code{\set}.
 
 You will need to combine this statement with @code{\context} to select
 the appropriate context to apply this to.
 
-Here are some random examples. 
-
-
 In the following example, all note heads occurring at current staff
 level, are shifted up and right by setting their @code{extra-offset}
 property.
@@ -3972,7 +4090,7 @@ property.
 
 @cindex @code{extra-offset}
 
-In this example, the predicate checks the @code{text} grob property, to
+In this example, the predicate checks the @code{text} object property, to
 shift only the `m.d.' text,  but not the fingering instruction "2".
 @lilypond[verbatim,singleline]
 #(define (make-text-checker text)
@@ -4016,7 +4134,7 @@ example of those is in @file{input/test/cue-notes.ly}.
 @cindex font size
 @cindex size
 
-The font used for printing a grob can be selected by setting
+The font used for printing a object can be selected by setting
 @code{font-name}, e.g.
 @example
   \property Staff.TimeSignature
@@ -4026,8 +4144,8 @@ You may use any font which is available to @TeX{}, such as foreign
 fonts or fonts that do not belong to the Computer Modern font family.
 Font selection for the standard fonts, @TeX{}'s Computer Modern fonts,
 can also be adjusted with a more fine-grained mechanism.  By setting
-the grob properties described below, you can select a different font.
-All three mechanisms work for every grob that supports
+the object properties described below, you can select a different font.
+All three mechanisms work for every object that supports
 @code{font-interface}.
 
 @table @code
@@ -4065,15 +4183,15 @@ For any of these properties, the value @code{*} (i.e. the @emph{symbol},
 @code{*}, entered as @code{#'*}), acts as a wildcard. This can be used
 to override default setting, which are always present. For example:
 @example
-  \property Lyrics . LyricText \override #'font-series = #'bold
-  \property Lyrics . LyricText \override #'font-family = #'typewriter
-  \property Lyrics . LyricText \override #'font-shape = #'*
+  \property Lyrics.LyricText \override #'font-series = #'bold
+  \property Lyrics.LyricText \override #'font-family = #'typewriter
+  \property Lyrics.LyricText \override #'font-shape  = #'*
 @end example
 
 @cindex @code{font-style}
 
 There are also pre-cooked font selection qualifiers. These are
-selected through the grob property @code{font-style}.  For example,
+selected through the object property @code{font-style}.  For example,
 the style @code{finger} selects family @code{number} and relative size
 @code{-3}.  Styles available include @code{volta}, @code{finger},
 @code{tuplet}, @code{timesig}, @code{mmrest}, @code{script},
@@ -4083,7 +4201,7 @@ to this file for more information.
 
 @cindex magnification
 
-The size of the font may be scaled with the grob property
+The size of the font may be scaled with the object property
 @code{font-magnification}.  For example, @code{2.0} blows up all
 letters by a factor 2 in both directions.
 
@@ -4122,7 +4240,7 @@ in the following way.
 @end lilypond
 
 Normally, the Scheme markup text is stored in the @code{text} property
-of a grob.  Formally, it is defined as follows:
+of a object.  Formally, it is defined as follows:
 
 @example
 text: string | (head? text+)
@@ -4134,9 +4252,9 @@ abbrev: @code{columns lines roman music bold italic named super sub}
         @code{large Large dynamic}
 @end example
 
-The markup is broken down and converted into a list of grob properties,
+The markup is broken down and converted into a list of object properties,
 which are prepended to the property list.  The @var{key}-@var{value}
-pair is a grob property. A list of properties available is included in
+pair is a object property. A list of properties available is included in
 the generated documentation for @internalsref{text-interface}.
 
 The following abbreviations are defined:
@@ -4228,9 +4346,9 @@ slightly too wide.
 @section Global layout
 
 The global layout determined by three factors: the page layout, the
-iline breaks and the spacing. These all influence each other: The
+line breaks and the spacing. These all influence each other: The
 choice of spacing determines how densely each system of music is set,
-whree line breaks breaks are chosen, and thus ultimately how many
+where line breaks breaks are chosen, and thus ultimately how many
 pages a piece of music takes. In this section we will explain how the
 lilypond spacing engine works, and how you can tune its results.
 
@@ -4255,13 +4373,13 @@ are chosen whenever the page gets full.
 @subsection Vertical spacing
 
 @cindex vertical spacing
-@cindex distance between staffs
+@cindex distance between staves
 @cindex staff distance
 @cindex between staves, distance
 
 The height of each system is determined automatically by lilypond, to
 keep systems from bumping into each other, some minimum distances are
-set.  By changing these, you can put staffs closer together, and thus
+set.  By changing these, you can put staves closer together, and thus
 put more  systems onto one page.
 
 Normally staves are stacked vertically. To make
@@ -4280,14 +4398,14 @@ could also make the staff larger at the bottom by setting it to
 @code{(-6 . 4)}. The default value is @code{(-6 . 6)}.
 
 Vertical aligment of staves is handled by the
-@internalsref{VerticalAlignment} grob, which lives at
+@internalsref{VerticalAlignment} object, which lives at
 @internalsref{Score} level.
 
-The piano staffs are handled a little differently: to make cross-staff
+The piano staves are handled a little differently: to make cross-staff
 beaming work correctly, it necessary that the distance between staves
 is fixed.  This is also done with a @internalsref{VerticalAlignment}
-grob, created in @internalsref{PianoStaff}, but a forced distance is
-set. This is done with the grob property #'forced-distance. If you
+object, created in @internalsref{PianoStaff}, but a forced distance is
+set. This is done with the object property #'forced-distance. If you
 want to override this, use a @code{\translator} block as follows:
 @example
   \translator @{
@@ -4295,7 +4413,7 @@ want to override this, use a @code{\translator} block as follows:
     VerticalAlignment \override #'forced-distance = #9
   @}
 @end example
-This would bring the staffs together at a distance of 9 staff spaces,
+This would bring the staves together at a distance of 9 staff spaces,
 and again this is measured from the center line of each staff.
 
 
@@ -4318,7 +4436,7 @@ quarter note is followed by 2 NHW, the half by 3 NHW, etc.
 @end lilypond
 
 These two amounts of space are @code{shortest-duration-space}
-@code{spacing-increment}, grob properties of
+@code{spacing-increment}, object properties of
 @internalsref{SpacingSpanner}. Normally @code{spacing-increment} is
 set to 1.2, which is the width of a note head, and
 @code{shortest-duration-space} is set to 2.0, meaning that the
@@ -4359,7 +4477,7 @@ through @code{base-shortest-duration}.
 
 In the introduction it was explained that stem directions influence
 spacing. This is controlled with @code{stem-spacing-correction} in
-@internalsref{NoteSpacing}. The @code{StaffSpacing} grob contains the
+@internalsref{NoteSpacing}. The @code{StaffSpacing} object contains the
 same property for controlling the stem/barline spacing. In the
 following example shows these corrections, once with default settings,
 and once with exaggerated corrections.  
index 8a1b71d2935f4616ff5cdc6072525fe67db7ebeb..54968e2e27d14bea4d68d3811fc52559c0d40bc7 100644 (file)
@@ -246,7 +246,7 @@ LilyPond source file looks like:
 
 In the last section we explained what kind of things you could enter
 in a lilypond file.  In this section we explain how to run LilyPond 
-and how view or print the output.  If you have not used LilyPond
+and how to view or print the output.  If you have not used LilyPond
 before, want to test your setup of LilyPond, or want to run an example
 file yourself, read this section.   The instructions that follow
 are for running LilyPond on Unix-like systems.  Some additional
@@ -331,10 +331,10 @@ file by executing @code{lpr test.ps}.
 @c volgende alinea schrappen?  
 
 If your system does not support printing PostScript files, then you
-can install GhostScript, a PostScript emulator.  Refer to
-GhostScript's website at @uref{http://www.ghostscript.com}.
+can install Ghostscript, a PostScript emulator.  Refer to
+Ghostscript's website at @uref{http://www.ghostscript.com}.
 
-@cindex GhostScript
+@cindex Ghostscript
 @cindex @code{lpr}
 @cindex Printing output
 @cindex PostScript
@@ -500,7 +500,8 @@ g'4 ~ g' a'2 ~ a'4
 @end quotation
 @separate
 
-The key signature is set with the command ``@code{\key}'':
+The key signature is set with the command ``@code{\key}''.  One caution:
+you need to specify whether the key is @code{\major} or @code{\minor}.
 @quotation
 @example
 \key d \major
@@ -2020,10 +2021,10 @@ to the page layout of this document.
 @node Fine tuning a piece
 @section  Fine tuning a piece
 
-In this section, we show some ways to fine tune the final output of a
-piece. We do so using a single measure of a moderately complex piano
-piece: a Brahms intermezzo (opus 119, no. 1). Both fragments (the
-tuned and the untuned are in the @file{input/tutorial/}).
+In this section we show some ways to fine tune the final output of a
+piece.  We do so using a single measure of a moderately complex piano
+piece: a Brahms intermezzo (opus 119, no. 1).  Both fragments (the
+tuned and the untuned versions) are in @file{input/tutorial/}.
 
 The code for the untuned example shows us some new things.
 
@@ -2037,99 +2038,101 @@ The code for the untuned example shows us some new things.
 @cindex @code{\<}
 @cindex @code{\!}
 
-The crescendo is ended at the half note by the escaped exclamation
-mark @code{\!}.
-
-Hairpin dynamics can be indicated using @code{\>} to start a
-decrescendo, and @code{\!} to end one. The crescendo is started using
-@code{\<} and also ended using @code{\!}. Absolute dynamics can be
-entered using @code{\p}, @code{\mf}, etc. All these commands apply to
-the complete chord where they are entered, but for syntactical
-reasons, they must be attached to one of the notes of  the chord.
+Hairpin dynamics can be easily added to Lilypond scores.  Beginning a
+crescendo is indicated with @code{\<} and ending a crescendo is indicated
+with @code{\!}.  A decrescendo can be indicated with @code{\>} and
+@code{\!}.  Absolute dynamics (sometimes called ``Letter dynamics'') can
+be entered using @code{\p}, @code{\mf}, etc.  All these dynamics will
+apply to the whole chord where they are entered, but for syntactical
+reasons they must be attached to one of the notes of the chord.
 
 @cindex fingering instructions
 
-Fingering indications are entered simply using @code{-@var{N}}, where
+Fingering indications are entered with @code{-@var{N}}, where
 @var{N} is a digit.
 
 Now that we have the basic piece of music entered, we want to fine
-tune it, so we get something that resembles the original printed
+tune it so that we get something that resembles the original printed
 edition by Schott/Universal Edition:
 
 @lilypondfile{brahms-tweaked.ly}
 
-@cindex tuning grob behavior
+@cindex tuning graphical objects
 
-The basic process that we follow is that we override defaults in the
-printing system. We do this by setting variables in so-called grobs.
-Printed symbols are internally represented by Graphical Objects
-(Grobs).  Each grob is described by a bunch of settings.  Every
-setting is a variable: it has a name, and you can assign a value to
-the variable. These setting determine the fonts, offsets, sub-routines
-to be called on the grob, etc.  The initial values of these settings
-are set in the Scheme file @file{scm/grob-description.scm}.
+Fine tuning involves overriding the defaults of the printing system.
+We do this by setting variables which control how Lilypond prints
+symbols.  Printed symbols are called graphical objects (often
+abbreviated to @emph{grob}). Each object is described by a bunch of
+settings.  Every setting is a variable: it has a name and a value
+which you can change.  These values determine the fonts, offsets,
+sub-routines to be called on the object, etc.  The initial values of
+these settings are set in the Scheme file
+@file{scm/grob-description.scm}.
 
 @cindex slur attachments
 
-We start with the slur: the slur in the upper part, running from the F
-sharp to the A, runs from stem to stem in the printed edition, while
-ours starts from the note head at the left. The following property
-setting forces all slurs to run from stem to stem (and not from or to
-note head)
+We start with the slur in the upper part, running from F sharp to A.  In
+the printed edition, this slur runs from stem to stem; in our version,
+the slur begins at the note head of the F sharp.  The following property
+setting forces all slurs to run from stem to stem (not from or to note
+heads!).
 
 @example
   \property Voice.Slur \set #'attachment = #'(stem . stem)
 @end example
 
-More precisely, this command extends the definition of the @code{Slur}
+More precisely, this command modifies the definition of the @code{Slur}
 object in the current @code{Voice}.  The variable @code{attachment} is
 set to the pair of symbols @code{'(stem . stem)}. 
 
-Although this is useful information, it is not very helpful: the
-lilypond back-end supports approximately 240 variables like
-@code{attachment}, each with their own meaning and own type
-(eg. number, symbol, list, etc). Besides slur, LilyPond has 80
-different types of Grobs, that may be created in 14 different context
-types besides Voice.
+Although this fixes the slur, it isn't very helpful for fine tuning in
+general: the lilypond back-end supports approximately 240 variables
+like @code{attachment}, each with their own meaning and own type
+(eg. number, symbol, list, etc).  Besides slur, LilyPond has 80
+different types of graphical objects, that may be created in 14
+different context types besides Voice.
 
 @cindex internal documentation
-@cindex finding grobs
-@cindex grob descriptions 
+@cindex finding graphical objects
+@cindex graphical object descriptions 
 
 The interesting information is how you can figure out which properties
 to tune for your own scores. To discover this, you must have a copy of
-the internals document. This is a set of HTML pages, which should be
-included if you run a binary distribution@footnote{You can also
+the internals document. This is a set of HTML pages which should be
+included if you installed a binary distribution@footnote{You can also
 compile them by executing @code{make -C Documentation/user/
-out/lilypond-internals.html} in the source package.}. This document is
-also available on the web: go to the lilypond website, click
-``Documentation: other'' on the side bar, click
-``lilypond-internals'', under information for users.
-
-You might want to bookmark either the HTML files on disk, or the one
-on the web. One word of caution is in place here: the internals
-documentation is generated from the definitions that lily uses. For
-that reason, it is strongly tied to the version of LilyPond that you
-use. Before you proceed, please make sure that you are using the
-documentation that corresponds to the LilyPond version that you use.
-
-Suppose that you wanted to tune the behavior of the slur. The first
-step is to get some general information on slurs in lilypond. Turn to
+out/lilypond-internals.html} in the source package.}.  These HTML pages
+are also available on the web: go to the lilypond website, click
+``Documentation: Index'' on the side bar, look in the ``Information for
+uses'' section, and click on ``Documentation of internals''.
+
+You might want to bookmark either the HTML files on your disk, or the one
+on the web (the HTML on your hard drive will load much faster than the
+ones on the web!).  One word of caution: the internals documentation is
+generated from the definitions that lily uses.  For that reason, it is
+strongly tied to the version of LilyPond that you use.  Before you
+proceed, please make sure that you are using the documentation that
+corresponds to the version of LilyPond that you are using.
+
+@c  TODO: the quote is incorrect, although that shouldn't be a big
+@c    problem for the reader.
+Suppose that you wanted to tune the behavior of the slur.  The first
+step is to get some general information on slurs in lilypond.  Turn to
 the index, and look up ``slur''. The section on slurs says
 @quotation
 The grob for this object is @internalsref{Slur}, generally in
 @internalsref{Voice} context.
 @end quotation
 
-So the grob for this object is called @code{Slur}, and slurs are
-created in the @code{Voice} context.  If you are reading this tutorial
-in the HTML version, then you can simply click Slur, otherwise, you
-must look it up the internal documentation: click ``grob overview'' ,
-and select ``slur'' (the list is alphabetical.)
+So the graphical object for this object is called @code{Slur}, and
+slurs are created in the @code{Voice} context.  If you are reading
+this tutorial in the HTML version, then you can simply click Slur,
+otherwise, you should look it up the internal documentation: click
+``grob overview'' and select ``slur'' (the list is alphabetical).
 
 Now you get a list of all the properties that the slur object
-supports, along with their default values. Among the properties we
-find the @code{attachment} property with its default setting.
+supports, along with their default values.  Among the properties we
+find the @code{attachment} property with its default setting.  
 The property documentation explains that the following setting will
 produce the desired effect:
 @example 
@@ -2138,30 +2141,32 @@ produce the desired effect:
 
 If you ran the previous example, you have unknowingly already used
 this kind of command.  The @file{ly/property-init.ly} contains the
-definition of @code{\stemUp}
+definition of @code{\stemUp}:
 @example
   stemUp = \property Voice.Stem \set #'direction = #1
 @end example  
 
+@c this is a long section, and adding an extra space here helps to
+@c break it into smaller subsections and thus is easier to understand.
+@separate
 
-We also want to move around the fingering `3'.  In the printed edition
-it is not above the stem, but a little lower, slightly left of the
-stem. From the user manual, we find that the associated grob is called
-@code{Fingering}, but how do we know if we should use @code{Voice} or
-@code{Staff}. In many cases, @code{Voice} is a safe bet, but you can
-also deduce this information from the internals documentation: if you
-visit the documentation of @code{Fingering}, you will notice
+Next we want to move the fingering `3'.  In the printed edition it is
+not above the stem, but a little lower and slightly left of the stem.
+From the user manual we find that the associated graphical object is
+called @code{Fingering}, but how do we know if we should use
+@code{Voice} or @code{Staff}?  In many cases, @code{Voice} is a safe
+bet, but you can also deduce this information from the internals
+documentation: if you visit the documentation of @code{Fingering}, you
+will notice
 @example
 Fingering grobs are created by: Fingering_engraver
 @end example
 
-
-
 Clicking @code{Fingering_engraver} will show you the documentation of
 the module responsible for interpreting the fingering instructions and
-translating them to a @code{Fingering} grob. Such a module is called
-an @emph{engraver}. The documentation of the @code{Fingering_engraver}
-says,
+translating them to a @code{Fingering} object.  Such a module is called
+an @emph{engraver}.  The documentation of the @code{Fingering_engraver}
+says
 @example
 Fingering_engraver is part of contexts: Voice and TabVoice
 @end example
@@ -2177,25 +2182,27 @@ or
 Since the @code{TabVoice} is only used for tab notation, we see that
 the first guess @code{Voice} was indeed correct.
 
-@cindex setting grob properties
+@cindex setting object properties
 @cindex @code{extra-offset}
 
-For shifting the fingering, we use the grob property
-@code{extra-offset}.  The following command manually adds an offset to
-the object. We move it a little to the left, and 1.8 staff space
-downwards.
+For shifting the fingering, we use the property @code{extra-offset}.
+The following command manually adds an offset to the object.  We move
+it a little to the left, and 1.8 staff space downwards.
 @example
  \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8) 
 @end example      
 The @code{extra-offset} is a low-level feature: it moves around
 objects in the printout; the formatting engine is completely oblivious
-to these offsets. The unit of these offsets are staff-spaces. 
+to these offsets.  The unit of these offsets are staff-spaces.  The
+first number controls left-right movement; a positive number will move
+the object to the right.  The second number controls up-down movement;
+a positive number will move it higher.
 
-@cindex reverting grob properties
-@cindex undoing grob properties
+@cindex reverting object properties
+@cindex undoing object properties
 
-We only want to offset a single grob, so after the F-sharp, we must
-undo the setting. The technical term is to revert the grob property.
+We only want to offset a single object, so after the F-sharp we must
+undo the setting. The technical term is to revert the property.
 @example
   \property Voice.Fingering \revert #'extra-offset
 @end example
@@ -2204,54 +2211,54 @@ undo the setting. The technical term is to revert the grob property.
 @cindex translator properties
 @cindex grob properties
 @cindex music properties
+@separate
 
+There are three different types of variables in LilyPond, something
+which can be confusing at first (and for some people it stays confusing
+:).  Variables such as @code{extra-offset} and @code{attachment} are
+called grob properties.  They are not the same as translator properties,
+like @code{autoBeaming}.  Finally, music expressions are internally
+stored using properties (so-called music properties).  You will encounter
+music properties if you run Scheme functions on music using @code{\apply}.
 
-There is three different types of variables in LilyPond, something
-which is confusing at first (and for some, it stays like that).
-Variables such as @code{extra-offset} and @code{attachment} are called
-grob properties. They are something different from the translator
-properties, like @code{autoBeaming}. Finally, music expressions are
-internally also stored using properties, so-called music
-properties. You will encounter the latter type if you run Scheme
-functions on music using @code{\apply}.
-
-The second fingering instruction should be moved up a little, to avoid
-a collision with the slur. This could be achieved with
+The second fingering instruction should be moved up a little to avoid
+a collision with the slur.  This could be achieved with
 @code{extra-offset}, but in this case, a simpler mechanism also
-works. We insert an empty text between the 5 and the note. The empty
+works.  We insert an empty text between the 5 and the note. The empty
 text pushes the fingering instruction away:
 @example
   a^" "^#'(finger "5")
 @end example
 
-Lilypond tries to put fingering instructions closer to the notes as
-text instructions. To insert an empty text (@code{^" "}) between the
-finger and the note, we have disguised the fingering instruction as a
-text: @code{(finger "5")}.
+Lilypond tries to put fingering instructions as close to the notes as
+possible.  To make sure that Lilypond doesn't do that, we disguise the
+fingering as text: @code{(finger "5")}.
 
-Normally, one would specify dynamics in a single voice, and start and
-end dynamics (such as @b{f} and @b{p}) will be aligned with
-hairpins. In this case, we want the decrescendo to be in a different
-place from the piano sign. We achieve this by putting the dynamic
-markings in different voices. The crescendo should be above the upper
-staff. This can be forced by the precooked command 
+@separate
+
+Normally one would specify all dynamics in the same voice, so that
+dynamics (such as @b{f} and @b{p}) will be aligned with hairpins.  But
+in this case, we don't want the decrescendo to be aligned with the
+piano sign.  We achieve this by putting the dynamic markings in different
+voices.  The crescendo should be above the upper staff.  This can be
+forced by using the precooked command 
 @example
   \dynamicsUp
 @end example
 
-However, if you do that, the decrescendo will be too close to the
-upper voice, and collide with the stems. Looking at the manual for
+However, if you do that the decrescendo will be too close to the
+upper voice and collide with the stems.  Looking at the manual for
 dynamics, we notice that ``Vertical positioning of these symbols is
-handled by the @internalsref{DynamicLineSpanner} grob.''. If we turn
-to the documentation of @code{DynamicLineSpanner}, we find that the
-@code{DynamicLineSpanner} supports several so-called
-`interfaces'. This grob not only puts dynamic objects next to the
-staff (@code{side-position-interface}), but it also groups dynamic
-objects (@code{axis-group-interface}), is considered a dynamic sign
-itself (@code{dynamic-interface}) and is a grob: it has the
-@code{grob-interface}, with all the variables that come with it.
-
-For the moment, we are interested in the side positioning:
+handled by the @internalsref{DynamicLineSpanner} grob.''.  If we turn
+to the documentation of @code{DynamicLineSpanner}, we find that
+@code{DynamicLineSpanner} supports several so-called `interfaces'.  This
+object not only puts dynamic objects next to the staff
+(@code{side-position-interface}), but it also groups dynamic objects
+(@code{axis-group-interface}), is considered a dynamic sign
+itself (@code{dynamic-interface}), and is an object.  It has the standard
+@code{grob-interface} with all the variables that come with it.
+
+For the moment we are interested in side positioning:
 @quotation
  side-position-interface
 
@@ -2259,8 +2266,8 @@ For the moment, we are interested in the side positioning:
   support).  In this case, the direction signifies where to put the
   victim object relative to the support (left or right, up or down?)
 @end quotation
-Between the grob and its support (in this case: the notes in the voice
-going down), there should be more space. This space is controlled by
+Between the object and its support (in this case the notes in the voice
+going down), there should be more space.  This space is controlled by
 @code{padding}, so we increase it.
 @example
            \property Voice.DynamicLineSpanner \override #'padding = #5.0
@@ -2268,29 +2275,45 @@ going down), there should be more space. This space is controlled by
 
 This command is almost like the command for setting slur attachments,
 but subtly different in its details.  Grob properties can be
-manipulated with two commands: @code{\override} extends the grob
+manipulated with two commands: @code{\override} extends the 
 variables with a setting, and @code{\revert} releases this
-setting. This has a certain theoretical appeal: the operations are
-simple and symmetric. For practical use, it can be cumbersome.  Both
+setting.  This has a certain theoretical appeal: the operations are
+simple and symmetric.  But for practical use, it can be cumbersome.  The
 commands act like parentheses: you should carefully balance the use of
-@code{\override} and @code{\revert}. The @code{\set} command is more
+@code{\override} and @code{\revert}.  The @code{\set} command is more
 friendly: it first does a @code{\revert} followed by @code{\override}.
 
-Finally, Brahms uses music notation is a slightly unorthodox way. Ties
-usually happen only within one voice. In this piece, the composer
-gladly produces ties that jump voices. We deal with this by faking
+@separate
+
+Brahms uses music notation is a slightly unorthodox way.  Ties
+usually happen only within one voice.  In this piece, the composer
+gladly produces ties that jump voices.  We deal with this by faking
 these ties: whenever we need such a tie, we insert a notehead in a
-different voice, and blank the stem. This is done in the following
+different voice, and blank the stem.  This is done in the following
 snippet of code.
 
 @example
-         \property Voice.Stem \set #'transparent = ##t
+        \property Voice.Stem \set #'transparent = ##t
          d'
-         \property Voice.Stem \revert #'transparent
 @end example
+Blanking the stem should be done for only one object. One of the ways
+to achieve that, is by setting the property before a note. Reverting
+it afterwards is tedious, so for setting a property only once, we have
+the syntax @code{\once}: it reverts the property directly before
+proceeding to the next step in time.
+
+The @code{\once} keyword is added to @code{\property}.
+
 
 Finally, the last tie is forced up using @code{\tieUp}.
 
+@separate
+
+Here's the complete ``fine tuned'' version, which includes all the
+modifications we discussed in this section:
+
+@lilypondfile[verbatim]{brahms-tweaked.ly}
+
 
 @node An orchestral score
 @section An orchestral score
@@ -2301,23 +2324,25 @@ Finally, the last tie is forced up using @code{\tieUp}.
 @end menu
 
 
-Our last two examples show a way to setup the music for an orchestral
-score.  When typesetting a piece for several instruments, you'll want to
-create a conductor's full score, alongside several individual parts.
+Our next two examples demonstrate one way to create an orchestral score
+in LilyPond.  When typesetting a piece for several instruments, you'll
+want to create a full score (for the conductor) along with several
+individual parts (for the players).
 
 LilyPond is well suited for this task.  We will declare the music for
 each instrument individually, giving the music of each instrument its
 own name.  These pieces of music are then combined in different
-@code{\score} blocks to produce different combinations of the score.
+@code{\score} blocks to produce different combinations of instruments
+(for example, one @code{\score} block may only include the cello part;
+another @code{\score} block may be for all the strings, and yet another
+@code{\score} block may be for all parts together).
 
 This orchestral score example consists of three input files.  In the
 first file, @file{os-music.ly}, we define the music for all
-instruments.  This file will be used both for producing the score and
-the separate parts. Other files reference this file by doing
-@code{\include "os-music.ly"}.
-
-If you were to run LilyPond on this file, no printable output would be
-produced.
+instruments.  This file will be used for producing the score and
+the separate parts, but the file doesn't produce any sheet music
+itself.  Other files reference this file by doing @code{\include
+"os-music.ly"}.
 
 @example
 % os-music.ly
@@ -2356,36 +2381,38 @@ corno = \notes\relative c' @{
 @}
 @end example
 
-We will not go through the input line by line, but only indicate and
-explain the new elements.
+We will not examine this example line by line, since you already know
+most of it.  We'll examine a few lines which contain new elements.
 
 
 @separate
 @example
 global = @{
   \time 2/4
-  \skip 2*4 \bar "|.";
+  \skip 2*4 \bar "|."
 @}
 @end example
 
 Declare setting to be used globally.  The @code{\skip} command produces
 no output, but moves forward in time: in this case, the duration of a
 half note (@code{2}), and that four times (@code{*4}).  This brings us
-to the end of the piece, and we can set the end bar.
+to the end of the piece, and we can set the end bar.  You can use @code{s}
+as a shortcut for @code{\skip} (the last line of this section would
+be @code{s2*4 \bar"|."}).
 
 @separate
 @example
 Key = \notes \key as \major
 @end example
 Declare the key signature of the piece and assign it to the identifier
-@var{Key}.  Later on, we'll use @code{\Key} for all staves except those
+@var{Key}.  Later on we'll use @code{\Key} for all staves except those
 for transposing instruments.
 
 @node The full score
 @subsection The full score
 
 
-The second file, @file{input/tutorial/os-score.ly} reads the definitions of the first
+The second file, @file{input/tutorial/os-score.ly}, reads the definitions of the first
 (@file{input/tutorial/os-music.ly}), and defines the @code{\score} block for the full
 conductor's score.
 
@@ -2475,7 +2502,7 @@ Opus 1.
 @example
 \include "os-music.ly"
 @end example
-First, we need to include the music definitions we made in
+First we need to include the music definitions we made in
 @file{os-music.ly}.
 
 @separate
@@ -2484,16 +2511,14 @@ First, we need to include the music definitions we made in
 @end example
 
 This piece of Scheme code executes the function
-@code{set-point-and-click!}, with the argument @code{line-column}, a
-symbol).
-
-Editing input files can be complicated if you're working with large
-files: if you're digitizing existing music, you have to synchronize
-the .ly file, the sheet music on your lap and the sheet music on the
-screen.  The point-and-click mechanism makes it easy to find the
-origin of an error in the LY file: when you view the file with Xdvi
-and click on a note, your editor will jump to the spot where that note
-was entered.  For more information, see @ref{Point and click}.
+@code{set-point-and-click!} with the argument
+@code{line-column}.  Editing input files can be complicated if you're
+working with large files: if you're digitizing existing music, you have
+to synchronize the .ly file, the sheet music on your lap and the sheet
+music on the screen.  The point-and-click mechanism makes it easy to
+find the origin of an error in the LY file: when you view the file with
+Xdvi and click on a note, your editor will jump to the spot where that
+note was entered.  For more information, see @ref{Point and click}.
 
 
 @separate
@@ -2502,8 +2527,8 @@ was entered.  For more information, see @ref{Point and click}.
          (music "accidentals--1")))
 @end example
 
-When naming the tuning of the french horn, we'll need a piece of text
-with a flat sign.  LilyPond has a mechanism for font selection and
+To name the transposition of the french horn, we will need a piece of
+text with a flat sign.  LilyPond has a mechanism for font selection and
 kerning called Scheme markup text (See @ref{Text markup}).  The flat
 sign is taken from the music font, and its name is @code{accidentals--1}
 (The natural sign is called @code{accidentals-0}).  The default font is
@@ -2514,30 +2539,33 @@ too big for text, so we select a relative size of @code{-2}.
   <
     \global
 @end example
-Of course, all staves are simultaneous and use the same global settings.
+All staves are simultaneous and use the same global settings.
 
 @separate
 @example
     \property Score.BarNumber \override #'padding = #3
 @end example
 LilyPond prints bar numbers at the start of each line, but
-unfortunately, they end up a bit too close to the staff in this
-example.  A bar number internally is a Grob called @var{BarNumber}.
-BarNumber Grobs can be manipulated through their
+unfortunately they end up a bit too close to the staff in this
+example.  In LilyPond, a bar number is called @var{BarNumber}.
+BarNumber objects can be manipulated through their
 @var{side-position-interface}.  One of the properties of a
-@var{side-position-interface} that can be tweaked is the
-@var{padding}: the amount of extra space that is put between this Grob
-and other Grobs.  We set the padding to three staff spaces.
+@var{side-position-interface} that can be tweaked is @var{padding}:
+the amount of extra space that is put between this and other objects.
+We set the padding to three staff spaces.
 
 You can find information on all these kind of properties in LilyPond's
 automatically generated documentation in
 @ifnottex
-@ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}.
+@ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}
+or in @ref{Fine tuning a piece}.
 @end ifnottex
 @iftex
-the online documentation.
+the online documentation or in the previous section of the tutorial.
 @end iftex
 
+@c  REFERENCE MAO
+
 @separate
 @example
     \context StaffGroup = woodwind <
@@ -2545,9 +2573,9 @@ the online documentation.
 @end example
 A new notation context: the @code{StaffGroup}.  @code{StaffGroup} can
 hold one or more @code{Staff}'s, and will print a big bracket at the
-left of the score.  Start a new staff group for the woodwind section
-(just the flutes in this case).  Immediately after that, we start the
-staff for the two flutes, that also play simultaneously.
+left of the score.  This starts a new staff group for the woodwind
+section (just the flutes in this case).  Immediately after that, we
+start the staff for the two flutes, who also play simultaneously.
 
 @separate
 @example
@@ -2561,9 +2589,9 @@ names}).
         \property Staff.instrument = "2 Flauti"
         \property Staff.instr = "Fl."
 @end example
-And define the instrument names to be printed in the margin,
-@code{instrument} for the first line of the score, @code{instr} for the
-rest of the score.
+This defines the instrument names to be printed in the
+margin.  @code{instrument} specifies the name for the first line
+of the score, @code{instr} is used for the rest of the score.
 
 @separate
 @example
@@ -2578,7 +2606,7 @@ The flutes play in the default key.
 @end example
 Last come the actual flute parts.  Remember that we're still in
 simultaneous mode.  We name both voices differently, so that LilyPond
-will actually create two Voice contexts.  The flute parts are simple, so
+will create two Voice contexts.  The flute parts are simple, so
 we specify manually which voice is which: @code{\voiceOne} forces the
 direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets
 directions down.
@@ -2594,7 +2622,7 @@ Close the flutes staff and woodwind staff group.
 @example
         \property Staff.instrument = #'(lines "Timpani" "(C-G)")
 @end example
-The timpani staff only shows a new piece of scheme markup, it sets two
+The timpani staff demonstrates a new piece of scheme markup, it sets two
 lines of text.
 
 @separate
@@ -2604,8 +2632,8 @@ lines of text.
           \context Thread=two \tromboII
 @end example
 You have seen the notation contexts Staff and Voice, but here's a new
-one: Thread.  One or more Threads can be part of a Voice.  The Thread
-takes care of note heads and rests, the Voice combine note heads onto a
+one: Thread.  One or more Threads can be part of a Voice.  Thread
+takes care of note heads and rests; Voice combine note heads onto a
 stem.
 
 For the trumpets we use the automatic part combiner (see @ref{Automatic
@@ -2620,12 +2648,12 @@ when they're different.
        \property Staff.instrument = #`(lines "Corno"
           (columns "(E" ,text-flat ")"))
 @end example
-The french horn has the most complex scheme markup name, made up of two
-lines of text.  The second line has three elements (columns), the @code{(E},
-the flat sign @code{text-flat} that we defined before and a final @code{")"}.
-Note that we use a backquote instead of an ordinary quote at the
-beginning of the Scheme expression to be able to access the
-@code{text-flat} identifier, `unquoting' it with a @code{,}.
+The french horn (``Corno'') has the most complex scheme markup name, made
+up of two lines of text.  The second line has three elements (columns) --
+the @code{(E}, the flat sign @code{text-flat} that we defined previously,
+and a final @code{")"}.  Note that we use a backquote instead of an
+ordinary quote at the beginning of the Scheme expression to be able to
+access the @code{text-flat} identifier, `unquoting' it with a ``@code{,}''.
 
 @separate
 @example
@@ -2634,15 +2662,15 @@ beginning of the Scheme expression to be able to access the
 The french horn is to be tuned in E-flat, so we tell the MIDI back-end to
 transpose this staff by three steps.
 
-Note how we can choose different tuning for entering, printing and
-playing, using @code{\transpose} and the MIDI Staff property
-@var{transposing}.
+Note how we can choose different tunings for the text input, sheet music
+output and, and MIDI output, using @code{\transpose} and the MIDI Staff
+property @var{transposing}.
 
 @separate
 @example
         \notes \key bes \major
 @end example
-Therefore, it has a different key.
+Since the horn is transposing, it's in a different key.
 
 @separate
 @example
@@ -2654,8 +2682,8 @@ tutorial.
 
 @separate
 
-Usually, LilyPond's predefined setup of notation contexts (Thread,
-Voice, Staff, Staffgroup, Score) is just fine.  But in this case, we
+Usually LilyPond's default setup of notation contexts (Thread,
+Voice, Staff, Staffgroup, Score) is just fine.  But in this case we
 want a different type of Staff context.
 
 @example
@@ -2664,10 +2692,13 @@ want a different type of Staff context.
     @}
 @end example
 
-In orchestral scores, it often happens that one instrument has only
-rests during one line of the score.  The @code{HaraKiriStaffContext} can
+In orchestral scores it often happens that one instrument only has
+rests during one line of the score.  @code{HaraKiriStaffContext} can
 be used as a regular @code{StaffContext} drop-in and will take care of
-the automatic removing of empty staves.
+the automatic removing of empty staves -- so if the strings are the
+only instruments playing for a line, LilyPond will only print the string
+parts for that line of the score.  This reduces the number of page turns
+(and the number of dead trees!) required in a score.
 
 @node Extracting an individual part
 @subsection Extracting an individual part
@@ -2716,8 +2747,9 @@ Opus 1.
 
 Because we separated the music definitions from the @code{\score}
 instantiations, we can easily define a second score with the music of
-the second flute.  This then is the part for the second flute player.
-Of course, we make separate parts for all individual instruments.
+the second flute.  This is the part for the second flute player.  Of
+course, we would make separate parts for all individual instruments if
+we were preparing the score for an orchestra.
 
 @separate
 @example
@@ -2740,9 +2772,9 @@ but we need to set the instrument for this particular score.
     \property Score.skipBars = ##t
 @end example
 In the conductor's full score, all bars with rests are printed, but for
-the individual parts, we want to contract pieces of consecutive empty
-bars.  LilyPond will do this if Score's @var{skipBars} property to
-true. 
+the individual parts, we want to print one multimeasure rest instead of
+many consecutive empty bars.  LilyPond will do this if
+@code{Score.skipBars} is set to true (@code{##t}).
 
 
 @node Integrating text and music
@@ -2753,18 +2785,18 @@ true.
 @cindex HTML, music in
 @cindex Texinfo, music in
 
-Sometimes, you might want to use music examples in a text that you are
-writing. For example, if you are writing a musicological treatise, a
-songbook, or (like us) the LilyPond manual.  You can make such texts by
-hand, simply by importing a PostScript figure into your word processor.
-However, there is a also an automated procedure:
-
-If you use HTML, La@TeX{} or texinfo, you can mix text and LilyPond
-code. A script called @code{lilypond-book} will extract the music
-fragments, run LilyPond on them, and put back the resulting notation.
-This utility program is described fully in the chapter
-@ref{Integrating text and music with lilypond-book}. Here we show a
-small example. Since the example also contains explanatory text, we
+Sometimes you might want to use music examples in a text that you are
+writing (for example a musicological treatise, a songbook, or (like us)
+the LilyPond manual).  You can make such texts by hand, simply by
+importing a PostScript figure into your word processor.  However,
+there is an automated procedure to reduce the amount of work.
+
+If you use HTML, La@TeX{}, or texinfo, you can mix text and LilyPond
+code.  A script called @code{lilypond-book} will extract the music
+fragments, run LilyPond on them, and put back the resulting
+notation.  This program is fully described in the chapter
+@ref{Integrating text and music with lilypond-book}.  Here we show a
+small example.  Since the example also contains explanatory text, we
 won't comment on the contents.
 
 @example
@@ -2788,7 +2820,7 @@ If you have no \verb+\score+ block in the fragment,
   c'4
 \end@{lilypond@}
 
-In the example you see here, a number of things happened: a
+In the example you see here, two things happened: a
 \verb+\score+ block was added, and the line width was set to natural
 length. You can specify many more options using  \LaTeX style options
 in brackets:
@@ -2798,14 +2830,16 @@ in brackets:
   c'4 f bes es
 \end@{lilypond@}
 
-\texttt@{verbatim@} also shows the LilyPond code, \texttt@{11pt@} selects
-the default music size, \texttt@{fragment@} adds a score block,
+\texttt@{verbatim@} prints the LilyPond code in addition to the
+graphical score,
+\texttt@{11pt@} selects the default music size,
+\texttt@{fragment@} adds a score block,
 \texttt@{relative@} uses relative mode for the fragment, and
 \texttt@{intertext@} specifies what to print between the
 \texttt@{verbatim@} code and the music.
 
-If you include large examples into the text, it may be more convenient
-to put the example in a separate file:
+If you want to include large examples into the text, it may be more
+convenient to put the example in a separate file:
 
 \lilypondfile[printfilename]@{sammartini.ly@}
 
@@ -2817,10 +2851,9 @@ The \texttt@{printfilename@} option adds the file name to the output.
 Under Unix, you can view the results as follows.
 @example
 $ cd input/tutorial
-$ mkdir out/
-@var{..may complain that @file{out/} already exists..}
+$ mkdir -p out/
 $ lilypond-book --outdir=out/ lilbook.tex
-lilypond-book (GNU LilyPond) 1.3.146
+lilypond-book (GNU LilyPond) 1.6.1
 Reading `input/tutorial/lilbook.tex'
 Reading `input/tutorial/sammartini.ly'
 @var{lots of stuff deleted}
@@ -2836,7 +2869,7 @@ and running latex creates a lot of temporary files, and you wouldn't want
 those to clutter up your working directory. Hence, we have them created
 in a separate subdirectory.
 
-The result more or less looks like this: 
+The result looks more or less like this: 
 
 @separate
 
@@ -2882,11 +2915,13 @@ The @code{printfilename} option adds the file name to the output.
 @node  End of tutorial
 @section End of tutorial
          
-This is the end of the tutorial. If you came up till here, and
-have understood everything, then you're now an accomplished lilypond
-hacker. From here, you can  try fiddling with input
-files, coming back to the reference  manual for information.
-Also don't forget to check out the 
+This is the end of the tutorial.  If you read everything until this point
+(and understood everything!) then you're now an accomplished lilypond
+hacker.  From here you should try fiddling with input files or making your
+own input files.  Come back to the reference manual for more information
+if you get stuck!
+
+Don't forget to check out the 
 @ifhtml
 @uref{../../templates/out-www/templates.html,templates},
 @uref{../../test/out-www/test.html,example} and 
@@ -2896,8 +2931,7 @@ snippets.
 @ifnothtml
 templates, example and feature test snippets.
 @end ifnothtml
-If you want to see real action lilypond, then head over to
+If you want to see real action lilypond then head over to
 @uref{http://www.mutopiaproject.org}, which has many examples of
-classical music typeset by LilyPond.
-
+classical music typeset with LilyPond.
 
index 38851b89da5f247f28e2276c8529f58d7b216d04..5ae750579e50766245a2929522e992e9ea7e0da9 100644 (file)
@@ -16,7 +16,7 @@ SUBDIRS = buildscripts scripts flower lily \
 #
 
 SCRIPTS = configure aclocal.m4 autogen.sh
-README_FILES =  ChangeLog CHANGES COPYING DEDICATION NEWS README.mandrake ROADMAP
+README_FILES =  ChangeLog  COPYING DEDICATION NEWS README.mandrake ROADMAP THANKS
 README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt
 IN_FILES := $(wildcard *.in)
 EXTRA_DIST_FILES = $(wildcard *.el) vimrc VERSION $(README_FILES)  $(SCRIPTS) $(IN_FILES)  emacsclient.patch lexer-gcc-3.0.patch server.el.patch darwin.patch .cvsignore  lexer-gcc-3.1.sh 
@@ -89,7 +89,7 @@ lily/$(outdir)/lilypond:
 
 local-web: web-doc $(TOP_HTMLS:%.html=%) footify do-top-doc top-web
 
-web-ext = gz html midi pdf png txt
+web-ext = gz html midi pdf png txt ly
 top-web:
        cd $(builddir) && rm -f `find . -name \*.html~ -print`
        cd $(builddir) && find Documentation input \
@@ -126,12 +126,11 @@ builddir-setup: $(builddir)/share/lilypond-force
 
 $(builddir)/share/lilypond-force:
 # Preparing LilyPond tree for builddir exec
-       @echo Making $(builddir)/share 
-       @cd $(builddir) && rm -rf share
-       @mkdir -p $(builddir)/share/lilypond
-       @mkdir -p $(builddir)/share/lilypond/fonts
-       @mkdir -p $(builddir)/share/lilypond/tex
-       @cd $(builddir)/share/lilypond && \
+       cd $(builddir) && rm -rf share
+       mkdir -p $(builddir)/share/lilypond
+       mkdir -p $(builddir)/share/lilypond/fonts
+       mkdir -p $(builddir)/share/lilypond/tex
+       cd $(builddir)/share/lilypond && \
                ln -s $(abs-srcdir)/ly ly && \
                ln -s ../../mf/$(outconfbase) dvips && \
                ln -s ../../mf/$(outconfbase) afm && \
@@ -140,18 +139,19 @@ $(builddir)/share/lilypond-force:
                ln -s $(abs-srcdir)/ps && \
                ln -s ../../python/$(outconfbase) python && \
                ln -s $(abs-srcdir)/scm
-       @cd $(builddir)/share/lilypond/tex && \
+       cd $(builddir)/share/lilypond/tex && \
                ln -s $(abs-srcdir)/tex source && \
                ln -s ../../../mf/$(outconfbase) generate
-       @cd $(builddir)/share/lilypond/fonts && \
+       cd $(builddir)/share/lilypond/fonts && \
                ln -s $(abs-srcdir)/mf source && \
                ln -s ../../../mf/$(outconfbase) afm && \
                ln -s ../../../mf/$(outconfbase) tfm && \
                ln -s ../../../mf/$(outconfbase) type1
+       touch $@
 
 local-clean: builddir-setup-clean
 builddir-setup-clean:
-       @cd $(builddir) && rm -rf share
+       cd $(builddir) && rm -rf share
 
 $(config_h): configure.in aclocal.m4
 #
diff --git a/NEWS b/NEWS
index 3666b32e1d7beae841ef7f5d55b16747724987e0..7030ee0f1f3dbb8ef33aef375272f474b8e7f5a2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,8 +10,8 @@ now.
 
 * Completely rewritten MIDI import support.
 
-* Completely rewritten grace note support. Practically speaking this means
-that grace notes can be slurred to normal normal notes.
+* Completely rewritten grace note support. Practically speaking this
+means that grace notes can be slurred to normal normal notes.
 
 * Improved accidental handling and formatting: styles for producing
 cautionaries may vary, and complex collisions between accidentals of a
diff --git a/THANKS b/THANKS
new file mode 100644 (file)
index 0000000..997a22b
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,17 @@
+
+CONTRIBUTORS
+
+Graham Percival
+Rune Zedeler
+Jeremie Lumbroso
+Juergen Reuter
+
+
+BUG HUNTERS
+
+Karl-Johan Karlsson 
+Karl Berry
+Werner Lemberg
+Jeremie Lumbroso
+Erik Sandberg
+
diff --git a/VERSION b/VERSION
index e0d88b4c67df9c711b157c36e7ab34ab1e9c8d77..fb57bcfc5bb8001f23336c64d256b59ef6d6be80 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,3 @@
-foo:   
-       echo "This is HEAD.  Go away"
-       exit 1
-
 PACKAGE_NAME = LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=7
index 21333f50ba0b8bcc782f9d5f8b797c1ff5a6eb7c..8279c4778d0ce167492557d1b60022f9dabd933c 100644 (file)
 # strange shell, this C
 set datadir="@local_lilypond_datadir@"
 
- if ( $?GS_LIB ) then
-       setenv GS_LIB "$datadir/ps:$GS_LIB"
- else
-       setenv GS_LIB "$datadir/ps"
- endif
-
-
 # setenv LILYPONDPREFIX "$datadir"
-
 # bit silly. for ly2dvi, overrules compiled-in datadir...
 # setenv LILYPONDPREFIX "@local_lilypond_datadir@"
 
@@ -31,11 +23,21 @@ set noglob
 setenv TEXMF "{$datadir,"`kpsexpand  \$TEXMF`"}"
 unset noglob
 
+
+
+# if ( $?GS_LIB ) then
+#       setenv GS_LIB "$datadir/ps:$GS_LIB"
+# else
+#       setenv GS_LIB "$datadir/ps"
+# endif
+
+
+
 # Add all available TeX Type1 fonts (including Feta) to Ghostscript:
-if ( $?GS_FONTPATH ) then
-       setenv GS_FONTPATH `kpsewhich -expand-path=\$T1FONTS`:$GS_FONTPATH
-else
-       setenv GS_FONTPATH `kpsewhich -expand-path=\$T1FONTS`
-endif
+#if ( $?GS_FONTPATH ) then
+#       setenv GS_FONTPATH `kpsewhich -expand-path=\$T1FONTS`:$GS_FONTPATH
+#else
+#       setenv GS_FONTPATH `kpsewhich -expand-path=\$T1FONTS`
+#endif
 
 
index 6f88b34523ed49508c30dab7829e814d170a93e4..f1a941c411c6b95692e2d875b5b9ad2a140a3159 100644 (file)
@@ -23,12 +23,12 @@ TEXMF="{$datadir,"`kpsexpand  \\$TEXMF`"}"
 export TEXMF
 
 # For direct ps output: ps/lilyponddefs.ps
-GS_LIB="$datadir/ps:"${GS_LIB:=""}
-export GS_LIB
+## GS_LIB="$datadir/ps:"${GS_LIB:=""}
+## export GS_LIB
 
 # For direct ps output fonts. Add all available TeX Type1 fonts
-GS_FONTPATH=`kpsewhich -expand-path=\\$T1FONTS`:${GS_FONTPATH:=""}
-export GS_FONTPATH
+## GS_FONTPATH=`kpsewhich -expand-path=\\$T1FONTS`:${GS_FONTPATH:=""}
+## export GS_FONTPATH
 
        
 
diff --git a/buildscripts/ps-to-gifs.sh b/buildscripts/ps-to-gifs.sh
deleted file mode 100644 (file)
index e2a3da8..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-# ps-to-gifs, convert PS to multiple gifs or other bitmaps
-
-usage()
-{
-    cat <<EOF
-Convert PS to multiple gifs or other bitmaps
-Usage: ps-to-gifs.sh [OPTION]... [FILE]
-Options:
-  -h, --help         this help
-  -c, --crop         crop output
-  -o, --output=NAME  set output base
-  -p, --png          convert to png
-  -s, --size=SIZE    set papersize
-  -t, --transparent  change white to transparent
-EOF
-}
-
-if [ $# -lt 1 ]; then
-    usage;
-    exit 2;
-fi
-CROP=cat
-GIF=gif
-PNMTOGIF=ppmtogif
-
-while [ $# -gt 0 ]; do
-opt=$1
-shift
-    case $opt in
-    -t|--t*)
-       color='-transparent white'
-       ;;
-    -h|--h*)
-       usage;
-       exit 0
-       ;;
-    -c|--c*)
-       CROP=" pnmcrop "
-       ;;
-    -o) OUTFILE=$2; shift
-        ;;
-    --o*=*) OUTFILE=`echo $opt | sed -e s/"^.*="//`
-        ;;
-    -p|--p*)
-       GIF=png
-       PNMTOGIF=pnmtopng
-       ;;
-    -s) SIZE="-sPAPERSIZE=$2"; shift
-        ;;
-    --s*=*)
-        SIZE="-sPAPERSIZE=`echo $opt | sed -e s/"^.*="//`"
-       ;;
-    -*)
-        echo "ps-to-gifs: unknown option: \`$opt'"
-       exit 1
-       ;;
-    *)
-       FILE=$opt
-       ;;
-    esac
-done
-
-if [ "x$TRANSPARENT_IS_BROKEN" != "x" ]; then
-       color=
-fi
-
-if [ "x$OUTFILE" = "x" ]; then
-       BASE=`dirname $FILE`/`basename $FILE .ps`
-else
-       BASE=`dirname $OUTFILE`/`basename $OUTFILE .$GIF`
-fi
-
-# urg, pipe breaks
-rm -f $BASE{.ppm,.$GIF} $BASE-page*{.ppm,.$GIF}
-
-cat $FILE | gs -sDEVICE=pgm $SIZE -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="$BASE-page%d.ppm" -r90 -dNOPAUSE - -c quit $FILE
-# quant is soo slow
-# cat $PPMFILE | ppmquant 2 | pnmscale 0.3333 | pnmcrop | $PNMTOGIF $color > $OUTFILE
-PPMS=`ls $BASE*ppm`
-for i in $PPMS; do
-    o=`dirname $i`/`basename $i .ppm`.$GIF
-    cat $i | $CROP | $PNMTOGIF $color > $o
-    rm $i
-done
-
-if [ "x$OUTFILE" != "x" ]; then
-       mv $BASE-page1.$GIF $BASE.$GIF
-fi
-
diff --git a/buildscripts/ps-to-pngs.sh b/buildscripts/ps-to-pngs.sh
deleted file mode 100644 (file)
index 2a3f363..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-# ps-to-pngs, convert PS to multiple pngs
-  
-ps-to-gifs --png $*
index e74ed06bf65105180af3e832578b5084cf1d177d..1057e905e07a0bdc31a74969d9f4219440848700 100644 (file)
@@ -1,3 +1,20 @@
+lilypond (1.6.2-1) unstable; urgency=low
+
+  * New upstream release.
+  * Check g++ version and run lexer-gcc-3.1.sh if necessary.
+
+ -- Anthony Fok <foka@debian.org>  Tue, 10 Sep 2002 23:37:27 +0800
+
+lilypond (1.6.0-1) unstable; urgency=medium
+
+  * New upstream release.
+  * binary-arch: Changed "DH_OPTIONS=-a" to "DH_OPTIONS=-s" so that
+    dpkg-gencontrol would not 't choke on lilypond1.3 for unlisted
+    architectures.  Thanks to Ryan Murray for the report and suggested
+    fix.  (Closes: Bug#157766)
+
+ -- Anthony Fok <foka@debian.org>  Sun, 25 Aug 2002 11:59:01 +0800
+
 lilypond (1.5.68-2) unstable; urgency=low
 
   * Oops, I was missing Build-Depends on python-dev.  Thanks to LaMont
index cb2b51f22a69b04c1e313eff2dfd8b3eb4c8a8c8..5f3571eca34b5a102ab0491cad88f4fef5477067 100644 (file)
@@ -4,7 +4,7 @@ Build-Depends-Indep: bibtex2html, gs | gs-aladdin, netpbm (>= 2:9.10-1)
 Section: tex
 Priority: optional
 Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.5.6
+Standards-Version: 3.5.7
 
 Package: lilypond
 Architecture: any
@@ -28,18 +28,18 @@ Description: A program for printing sheet music.
 Package: lilypond-doc
 Section: doc
 Architecture: all
-Suggests: lilypond (>= 1.5.68-1), postscript-viewer, www-browser
+Suggests: lilypond (>= 1.6.2-1), postscript-viewer, www-browser
 Description: LilyPond Documentation in HTML, PS and DVI formats
  This package contains the HTML, PostScript and DVI documentation for the
  LilyPond music typesetting software.
 
 Package: lilypond1.3
 Architecture: arm i386 m68k powerpc sparc
-Depends: lilypond (>= 1.5.68-1)
+Depends: lilypond (>= 1.6.2-1)
 Description: Dummy package for transition to new stable lilypond.
  This dummy package provides a transition from the previous lilypond1.3
- package back to a newer lilypond because the stable 1.4 series
(soon 1.6 series) has arrived.
+ package back to a newer lilypond because the stable 1.4 and now 1.6 series
have arrived.
  .
  Please feel free to remove this dummy package after you have upgraded
  to the latest lilypond.
index cb2b51f22a69b04c1e313eff2dfd8b3eb4c8a8c8..5f3571eca34b5a102ab0491cad88f4fef5477067 100644 (file)
@@ -4,7 +4,7 @@ Build-Depends-Indep: bibtex2html, gs | gs-aladdin, netpbm (>= 2:9.10-1)
 Section: tex
 Priority: optional
 Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.5.6
+Standards-Version: 3.5.7
 
 Package: lilypond
 Architecture: any
@@ -28,18 +28,18 @@ Description: A program for printing sheet music.
 Package: lilypond-doc
 Section: doc
 Architecture: all
-Suggests: lilypond (>= 1.5.68-1), postscript-viewer, www-browser
+Suggests: lilypond (>= 1.6.2-1), postscript-viewer, www-browser
 Description: LilyPond Documentation in HTML, PS and DVI formats
  This package contains the HTML, PostScript and DVI documentation for the
  LilyPond music typesetting software.
 
 Package: lilypond1.3
 Architecture: arm i386 m68k powerpc sparc
-Depends: lilypond (>= 1.5.68-1)
+Depends: lilypond (>= 1.6.2-1)
 Description: Dummy package for transition to new stable lilypond.
  This dummy package provides a transition from the previous lilypond1.3
- package back to a newer lilypond because the stable 1.4 series
(soon 1.6 series) has arrived.
+ package back to a newer lilypond because the stable 1.4 and now 1.6 series
have arrived.
  .
  Please feel free to remove this dummy package after you have upgraded
  to the latest lilypond.
index 448324c93d093ef0f015a336688f3458364edcd8..2c715919c7b9e80766859c7e0ebfa06dcccdf248 100644 (file)
@@ -18,6 +18,11 @@ d = usr/share/doc/$(package)
 include VERSION
 VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
 
+gcc_version = $(shell g++ --version 2>&1 \
+               | grep '[0-9]\.[0-9]' | head -1 \
+               | sed -e 's/.*[^-.0-9]\([0-9][0-9]*\.[0-9][.0-9]*\).*/\1/' \
+                     -e 's/^\([0-9]\+\).*/\1/')
+
 # "main_memory = 263000" in /etc/texmf/texmf.cnf isn't large enough
 # for latex to process standchen.dvi.latex, so adding extra_mem_* ...
 # export extra_mem_top = 100000
@@ -44,10 +49,13 @@ build: build-stamp
 build-stamp:
        dh_testdir
 
-       ./configure --enable-checking --disable-debugging \
+       if [ "$(gcc_version)" = "3" ]; then ./lexer-gcc-3.1.sh; fi
+       CPPFLAGS=-I`pwd`/lily/out \
+       ./configure --enable-checking --enable-debugging \
                --prefix=/usr --enable-optimise \
                --infodir='$${prefix}/share/info' \
                --mandir='$${prefix}/share/man'
+       if [ "$(gcc_version)" = "3" ]; then ./lexer-gcc-3.1.sh; fi
        $(MAKE) MAKE_PFA_FILES=1
 
        touch build-stamp
@@ -114,7 +122,7 @@ binary-indep: build-doc install
        dh_md5sums
        dh_builddeb
 
-binary-arch: DH_OPTIONS=-a
+binary-arch: DH_OPTIONS=-s
 binary-arch: build install
        dh_testdir
        dh_testroot
index 839da9cce19f0ab6a48ef40b65560f3a8cff8a4d..7b94eab5fccff78e8c8be5bd794e07862b8ea11a 100644 (file)
@@ -108,6 +108,32 @@ Array<T>::slice (int lower, int upper) const
 }
 
 
+template<class T>
+void
+binary_search_bounds (Array<T> const &table,
+                     T const &key, int (*compare) (T const&, T const &),
+                     int *lo,
+                     int *hi)
+{
+  int cmp;
+  int result;
+
+  /* binary search */
+  do
+  {
+      cmp = (*lo + *hi) / 2;
+
+      result = (*compare)  (key, table[cmp]);
+
+      if (result < 0)
+          *hi = cmp;
+      else
+          *lo = cmp;
+    }
+  while (*hi - *lo > 1);
+}
+
+
 /*
   lookup with binsearch, return array index.
 */
@@ -119,24 +145,11 @@ binary_search (Array<T> const &table,
               int hi = -1
               ) 
 {
-  int cmp;
-  int result;
   if (hi < 0)
     hi = table.size ();
 
-  /* binary search */
-  do
-  {
-      cmp = (lo + hi) / 2;
-
-      result = (*compare)  (key, table[cmp]);
+  binary_search_bounds (table, key, compare, &lo, &hi);
 
-      if (result < 0)
-          hi = cmp;
-      else
-          lo = cmp;
-    }
-  while (hi - lo > 1);
   if (! (*compare) (key, table[lo]))
     {
       return lo;
@@ -144,4 +157,3 @@ binary_search (Array<T> const &table,
   else
     return -1;              /* not found */
 }
-
index b3bf47d5aa8e16344c315d202bd0c343ad4a57c9..2055d08f011c35415ce7f757fbfcda7d31587cd8 100644 (file)
@@ -39,6 +39,7 @@ public:
   String find (String nm) const;
 
   Array<String>::push;
+  void prepend (String str) { Array<String>::insert (str, 0); }
   String string ()const;
   bool try_add (String str);
   void add (String);
index 08fe766f5d3f2b9eb61a9d29ba5ab90d5a6637d9..21a40429c60af407a835c0525f9b7bfe56bc26b0 100644 (file)
@@ -12,6 +12,8 @@
 
 #include "array.hh"
 
+
+
 /**
   an array of pointers.
 
 template<class T>
 class Link_array : private Array<void *>
 {
-  static int default_compare (T *const& p1, T  *const&p2) {
-    /* can't do p1 -p2, since T might be an incomplete type */
-    if (p1 < p2)
-      return -1 ;
-    if (p2 < p1)
-      return 1;
-    return 0;
-  }
+
   Link_array (Array<void*> v)
     :Array<void*> (v)
     {
@@ -37,6 +32,15 @@ public:
   Link_array ()
     {}
 
+  static int default_compare (T *const& p1, T  *const&p2)
+  {
+    /* can't do p1 -p2, since T might be an incomplete type */
+    if (p1 < p2)
+      return -1 ;
+    if (p2 < p1)
+      return 1;
+    return 0;
+  }
   Link_array (T * const *tp, int n)
     : Array<void*> ((void **)tp, n)
     {
@@ -179,7 +183,6 @@ public:
       else
        return 0;
     }
-  
 };
 
 template<class T, class V>
@@ -295,5 +298,30 @@ binsearch_links (Link_array<T> const &arr, T *t,
 }
 
 
+template<class T>
+void
+binary_search_bounds (Link_array<T> const &table,
+                     T const *key, int (*compare) (T * const& , T *const &),
+                     int *lo,
+                     int *hi)
+{
+  int cmp;
+  int result;
+
+  /* binary search */
+  do
+  {
+      cmp = (*lo + *hi) / 2;
+
+      result = (*compare)  ((T*) key, table[cmp]);
+
+      if (result < 0)
+          *hi = cmp;
+      else
+          *lo = cmp;
+    }
+  while (*hi - *lo > 1);
+}
+
 #endif // PARRAY_HH
 
index b978910caf309d7a4b45c6e505f1ca557e0faafe..aade80fbbc899e39972df13b2bc194ba5c524f36 100644 (file)
@@ -39,7 +39,6 @@ struct Polynomial
 
   /// eliminate #x#  close to  zero
   void real_clean ();
-  static Polynomial add (const Polynomial & p1, const Polynomial & p2);
   void scalarmultiply (Real fact);
   void operator *= (Real f) { scalarmultiply (f); }
   void operator /= (Real f) { scalarmultiply (1/f); }
@@ -48,7 +47,6 @@ struct Polynomial
   void operator -= (Polynomial const &p2);
   Polynomial (Real a, Real b =0.0);
   Polynomial (){}
-  static Polynomial subtract (const Polynomial & p1, const Polynomial & p2);
   void set_negate (const Polynomial & src);
     
   /// take the derivative
index f5d4b38fe3c07bb14fccbabcbf3a3bb6b09e7e24..c8bf66811fef038004f283016ede22406edd4a64 100644 (file)
@@ -94,23 +94,29 @@ Polynomial::clean ()
 }
 
 
-Polynomial 
-Polynomial::add (const Polynomial & p1, const Polynomial & p2)
+
+void
+Polynomial::operator += (Polynomial const &p)
 {
-  Polynomial dest;
-  int tempord =  p2.degree () >? p1.degree ();
-  for (int i = 0; i <= tempord; i++)
-    {
-      Real temp = 0.0;
-      if (i <= p1.degree ())
-       temp += p1.coefs_[i];
-      if (i <= p2.degree ())
-       temp += p2.coefs_[i];
-      dest.coefs_.push (temp);
-    }
-  return dest;
+  while (degree () < p.degree())
+    coefs_.push (0.0);
+
+  for (int i = 0; i <= p.degree(); i++)
+    coefs_[i] += p.coefs_[i];
 }
 
+
+void
+Polynomial::operator -= (Polynomial const &p)
+{
+  while (degree () < p.degree())
+    coefs_.push (0.0);
+
+  for (int i = 0; i <= p.degree(); i++)
+    coefs_[i] -= p.coefs_[i];
+}
+
+
 void
 Polynomial::scalarmultiply (Real fact)
 {
@@ -118,24 +124,7 @@ Polynomial::scalarmultiply (Real fact)
     coefs_[i] *= fact;
 }
 
-Polynomial
-Polynomial::subtract (const Polynomial & p1, const Polynomial & p2)
-{
-  Polynomial dest;
-  int tempord =  p2.degree () >? p1.degree ();
-  
-  for (int i = 0; i <= tempord; i++)
-    {
-      Real temp = 0.0; // can't store result directly.. a=a-b
-      if (i <= p1.degree ())
-       temp += p1.coefs_[i];
-      if (i <= p2.degree ())
-       temp -= p2.coefs_[i];
-      dest.coefs_.push (temp);
-    }
-  return dest;
-  
-}
+
 
 void
 Polynomial::set_negate (const Polynomial & src)
@@ -356,14 +345,4 @@ Polynomial:: operator *= (Polynomial const &p2)
   *this = multiply (*this,p2);
 }  
 
-void
-Polynomial::operator += (Polynomial const &p)
-{
-  *this = add ( *this, p);
-}
 
-void
-Polynomial::operator -= (Polynomial const &p)
-{
-  *this = subtract (*this, p);
-}
diff --git a/input/SondagMorgen/SondagMorgenOmkvaedVolta2.ly b/input/SondagMorgen/SondagMorgenOmkvaedVolta2.ly
deleted file mode 100644 (file)
index f266c95..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-\version "1.5.68"
-\include "deutsch.ly"
-
-marks = \lyrics {
-    \marks
-    ""1*9
-}
-
-ned = \downbow
-op = \upbow
-
-global = \notes {
-    \global
-    \bar "|."
-    \property Score.repeatCommands = #'((volta #f)(volta "2"))
-    s1*9
-}
-
-akk = \lyrics {
-    \akk
-    "A11"2 "H11"
-    "Em7" "G$\\Delta$" "A11" "H11"
-    "C$\\Delta$"1  "D6" "Am9" "Hm7" "C$\\Delta$"1  "H9$\\sharp$"
-}
-
-
-mel = \notes {
-    \mel
-    \relative g' {
-       r2 r8 e'4 d8 ~ |
-       d8 h4 e8~e h g a ~|
-       a g a g a g a g |
-       h4. e,8~e2 |
-       h'4. e,8~e2 |
-       h'4. e,8~e2 |
-       h'4. d8~d4 c |
-       h4. e,8~e2 |
-       h'4 h r8 e4 d8 |
-    }
-}
-
-kormel = \notes {
-    \kormel
-    \relative c'' {
-       R1*2
-       r2 r8 e e e
-       \repeat unfold 5 { e4. e8~e2 }
-       cisis4 cisis r2
-    }
-}
-
-sopsax = \notes {
-    \sopsax
-    \context Voice=sax \relative c'' {
-    a8 h4 d8 r d4 e8-\sfz |
-    r4 g,8-\mf r r fis r4 |
-    r8 d r4 r8 e r4 |
-    s1*0-\mp
-    \repeat unfold 2{
-       g4.-. g8 \< ~g4 \! r4*1/2 \> \! s4*1/2 |
-       a4.-. a8 \< ~a4 \! r4*1/2 \> \! s4*1/2  |
-    }
-    g4.-. g8 \< ~g4 \! r4*1/2 \> \! s4*1/2 |
-    cisis4-\ff cisis8 d r dis4 e8 | 
-    }
-}
-altsax = \notes {
-    \altsax
-    \context Voice=sax \relative c'' {
-    a8 h4 d8 r d4 e8-\sfz |
-    r4 e,8-\mf r r d r4 |
-    r8 h r4 r8 cis r4 |
-    s1*0-\mp
-    \repeat unfold 2{
-       e4.-. e8 \< ~e4 \! r4*1/2 \> \! s4*1/2 |
-       fis4.-. fis8 \< ~fis4 \! r4*1/2 \> \! s4*1/2  |
-    }
-    e4.-. e8 \< ~e4 \! r4*1/2 \> \! s4*1/2 |
-    a4-\ff a8 d r dis4 e8 |
-    }
-}
-tensax = \notes {
-    \tensax
-    \context Voice=sax \relative c' {
-    a8 h4 d8 r d4 e8-\sfz |
-    r4 h8-\mf r r a r4 |
-    r8 g r4 r8 a r4 |
-    s1*0-\mp
-    \repeat unfold 2{
-       d4.-. d8 \< ~d4 \! r4*1/2 \> \! s4*1/2 |
-       e4.-. e8 \< ~e4 \! r4*1/2 \> \! s4*1/2  |
-    }
-    d4.-. d8 \< ~d4 \! r4*1/2 \> \! s4*1/2 |
-    dis4-\ff dis8 d r dis4 e8 | 
-    }
-}
-
-piar = \notes {
-    \piar
-    \relative c'' {
-       r8 <g,4 a h d e> <a8 h cis e> r8 <d4 a' d> <e8 h' e> |
-       s1*2
-       <g,1-\mf \< h d e g>
-       <a d e fis>
-       <g c d e g>
-       <a d e fis>
-       <g1 \! h d e g> |
-       <dis'4.-\ff fis a h cisis> <d8 a' d> r8 <dis4 ais' dis> <e8 h' e> |
-    }
-}
-U = \sustainUp
-D = \sustainDown
-pial = \notes {
-    \pial
-    a,,8 a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a,
-    a,, \su <g a h d' e' > \sd e, h, h,, \su <a h cis' e'> \sd d, e, |
-    <c,1 c>
-    <d, d>
-    <a,, a,>
-    <h,, h,>
-    <c, c>
-    <h,,4. h,> <d,8 d> r <dis,4 dis> <d,8 d> |
-}
-guitar = \notes {
-    \guitar
-    e8-2 e-2 < a-3 d'-4> e-2 e-2 < a-3 d'-4> e-2 < h-3 e'-4> |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
-    e-2 e-2 < a-3 d'-4> e-2 e-2 e-2 < h-3 e'-4> e-2 |
-    s1*0_"FLANGE"
-    \repeat unfold 2 {
-       r8 d'-4 <h'-6 g'-5> d'-4 a'-5 d'-4 e'-4 d'-4
-       r8 d'-4 <h'-6 fis'-5> d'-4 a'-5 d'-4 e'-4 d'-4
-    }
-    r8 d'-4 <h'-6 g'-5> d'-4 a'-5 d'-4 e'-4 d'-4
-    <h4-3_"NO FLANGE" dis'-4 a'-5 cisis''-6> r8 < a-3 d'-4> e-2 < ais-3 dis'-4> e-2 < h-3 e'-4> |
-}
-
-cello = \notes {
-    \cello
-    R1*9
-}
-
-bas = \notes {
-    \bas
-    a,8 a, r h, r d4 e8 |
-    e,8 e, r8 g, g, g, r a, |
-    a, a, r h, h, h, r4 |
-    c4. c'8 r c'4.
-    d4. d'8 r d'4.
-    a,4. a8 r a4.
-    h,4. h8 r h4.
-    c4. c'8 r c'4.
-    h,4 h,8 d8 r dis4 e8 |
-}
-
-\include "drumpitch-init.ly"
-drhi = \notes {
-    \drhi
-    hh8 hh hh hho r cymc4 cymc8 |
-    hh8 hh hh hh hh hh hh hh |
-    hh8 hh hh hh hh hh hh hho |
-    \repeat percent 5 { hh8 hh hh hho hh hho hh hh16 hh }
-    hh8 hh hho cymc8~cymc cymc4 cymc8 |
-}
-drlo = \notes {
-    \drlo
-    bd8 sn bd bd hhp bd4 bd8 |
-    bd4 sn8 bd bd4 sn8 bd |
-    bd4 sn8 bd bd4 < 
-       bd sn
-    > |
-    \repeat percent 5 { bd4 bd8 bd bd4 bd } |
-    bd8 sn bd bd r bd4 bd8 |
-}
diff --git a/input/SondagMorgen/SondagMorgenOmkvaedVolta3.ly b/input/SondagMorgen/SondagMorgenOmkvaedVolta3.ly
deleted file mode 100644 (file)
index b19d9f3..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-\version "1.5.68"
-\include "deutsch.ly"
-
-marks = \lyrics {
-    \marks
-    ""1
-}
-
-ned = \downbow
-op = \upbow
-
-global = \notes {
-    \global
-    \property Score.repeatCommands = #'((volta #f)(volta "3"))
-    \bar ":|"
-    s1*1
-}
-
-akk = \lyrics {
-    \akk
-    "A11"2 "H11"
-}
-
-
-mel = \notes {
-    \mel
-    \relative c'' {
-       r2 r8 e4 d8 ~ |
-    }
-}
-
-kormel = \notes {
-    \kormel
-    R1
-}
-
-sopsax = \notes {
-    \sopsax
-    \context Voice=sax \relative c'' {
-       a8 h4 d8 r d4 e8 |
-    }
-}
-altsax = \notes {
-    \altsax
-    \context Voice=sax \relative c'' {
-       a8 h4 d8 r d4 e8 |
-    }
-}
-tensax = \notes {
-    \tensax
-    \context Voice=sax \relative c' {
-       a8 h4 d8 r d4 e8 |
-    }
-}
-
-piar = \notes {
-    \piar
-    \relative c'' {
-       r8 <g,4 a h d e> <a8 h cis e> r8 <d4 a' d> <e8 h' e> |
-    }
-}
-U = \sustainUp
-D = \sustainDown
-pial = \notes {
-    \pial
-    a,,8 a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
-}
-guitar = \notes {
-    \guitar
-    e8-2 e-2 < a-3 d'-4> e-2 e-2 < a-3 d'-4> e-2 < h-3 e'-4> |
-}
-
-cello = \notes {
-    \cello
-    R1
-}
-
-bas = \notes {
-    \bas
-    a,8 a, r h, r d4 e8~ |
-}
-
-\include "drumpitch-init.ly"
-drhi = \notes {
-    \drhi
-    hh8 hh hh hho r cymc4 cymc8 |
-}
-drlo = \notes {
-    \drlo
-    bd8 sn bd bd hhp bd4 bd8 |
-}
diff --git a/input/SondagMorgen/SondagMorgenOutro.ly b/input/SondagMorgen/SondagMorgenOutro.ly
deleted file mode 100644 (file)
index cbd718b..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-\version "1.5.68"
-\include "deutsch.ly"
-
-marks = \lyrics {
-    \marks
-    "\large\framebox{\bf{OUTRO}}"1*11
-}
-
-ned = \downbow
-op = \upbow
-
-global = \notes {
-    \global
-    \property Score.repeatCommands = #'((volta #f))
-    \bar ".|"
-    s1*11
-    \bar "|."
-}
-
-akk = \lyrics {
-    \akk
-    "Em7"2 "G"2 "Hm7"1 "Em7" "Hm7" "Em7" "Hm7"
-    "Em7"1 "Hm7" "Em7" "Hm7" "Em7"
-
-}
-
-
-mel = \notes {
-    \mel
-    \time 2/2
-    \relative c'' {
-       d8 h4 e8~e h g a ~|
-       a b a g a b a g |
-       e1
-       R1
-       g2 ~ g8 a g fis ~ |
-       fis h,2.. |
-       e1 |
-       fis2. r4 |
-       g2 ~ g8 a g fis ~ |
-       fis h,2.. |
-       e1 |
-    }
-}
-
-kormel = \notes {
-    \kormel
-    \time 2/2
-    \relative g' {
-       R1*4
-       h2.. a8 ~ |
-       a d,2.. |
-       g1 |
-       d2. r4 |
-       h'2.. a8 ~ |
-       a d,2.. |
-       g1 |
-    }
-}
-
-sopsax = \notes {
-    \sopsax
-    \time 2/2
-    \relative c''' {
-       r2 g-\p( fis d )h1~h1
-       h2.. a8~ a fis2.. |
-       g2( a )a2 d |
-       h2.. a8 ~ a fis2.. |
-       g2 r2
-    }
-}
-altsax = \notes {
-    \altsax
-    \time 2/2
-    \relative c'' {
-       r1 r1 r1 r1
-       g2-\p ~g8 a g fis ~ fis d2..|
-       e2( g )fis a |
-       g2~g8 a g fis ~ fis d2..|
-       e2 r
-    }
-}
-tensax = \notes { 
-    \tensax
-    \time 2/2
-    \relative c'' {
-       r1 r1 r2 g-\p( fis d
-       )e2.. d8 ~ d h2.. |
-       h2( d )d d |
-       e2.. d8 ~ d h2.. |
-       h2 r
-    }
-}
-
-piar = \notes {
-    \piar
-    \time 2/2
-    \relative c' {
-       r2 <d-\mf g h>
-       <a1 d fis>
-       fis'8( g d' fis, g d' fis, )g |
-       <a1-\arpeggio h d e a> 
-       R1
-       fis8( g d' fis, g d' fis, )g |
-       <d1-\arpeggio e g a d> 
-       R1
-       fis8( g d' fis, g d' fis, )g |
-       <a1-\arpeggio h d e a>
-       \clef "G^8"
-       \property PianoStaff.Arpeggio \override #'arpeggio-direction = #1
-       \property PianoStaff.connectArpeggios = ##t
-       <h1-\arpeggio fis' d' g a d> 
-    }
-}
-U = \sustainUp
-D = \sustainDown
-pial = \notes {
-    \pial
-    \clef "F"
-    \time 2/2
-    <e,2 e> <g,2 \D g>
-    \relative e { 
-       <h1 \U \D fis' d'>
-       <e1 \U \D h'>
-       <h \U \D fis' d'>
-       <e1 \U \D h' g'>
-       <h \U \D fis' d'>
-       <e1 \U \D h'>
-       <h \U \D fis' d'>
-       <e1 \U \D h'>
-       <h1*7/8 \U \D fis' d'> s8 \U
-       <e1*1/2-\arpeggio \D h' g'> s2 \U
-    }
-}
-guitar = \notes{
-    \guitar
-    \time 2/2
-    r2 <d'_"FLANGE"-4 g'-5 h'-6> |
-    \property Staff.Arpeggio \override #'arpeggio-direction = #1
-    a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-    <e1-\arpeggio-2 a-3 d'-4 g'-5 h'-6>
-    g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-    a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-    <e1-\arpeggio-2 a-3 d'-4 fis'-5 h'-6>
-    g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-    a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-    <e1-\arpeggio-2 a-3 d'-4 g'-5 h'-6>
-    g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-    <e,1-\arpeggio-1 e-2 a-3 d'-4 g'-5 h'-6>
-}
-
-cello = \notes {
-    \cello
-    \time 2/2
-    \relative c {
-        e1 d2( fis g h d fis )e1 fis2( d
-       )e1 d2( h g e fis d )e1
-    }
-}
-
-bas = \notes {
-    \bas
-    \time 2/2
-    e2 g, |
-    h,2 r8 a h4 |
-    e2 r8 a,4 h,8 |
-    r h a fis a h g4 |
-    e2 r8 d4 h,8 ~ |
-    h,2 r2
-    e2 r8 a,4 h,8 ~ |
-    h,2 r8 a h4 |
-    e2 r8 a,4 h,8 |
-    r h a fis a h g4 |
-    e1 |
-}
-
-\include "drumpitch-init.ly"
-drhi = \notes {
-    \drhi
-    \repeat percent 10 { cymr2 cymr }
-    cymr1
-}
-drlo = \notes {
-    \drlo
-    s1*11
-}
index 0fdaa320570d999baa9b619be8d51cf652218864..0bf13d689476f20b0fb63fc62e79eab5d6726130 100644 (file)
@@ -20,9 +20,8 @@
     ".\\\\Unrestricted modification and redistribution is permitted
     and encouraged---copy this music and share it.}"
   tagline = \mutopiapublicdomain
-  lastupdated = "2002/July/7"
-  footer = "Mutopia-2002/07/07-6"
-
+  lastupdated = "2002/August/19"
+  footer = "Mutopia-2002/08/19-6"
 }
 
 
 
  the few forced linebreaks were an earlier attempt to get the spacing
  to match up.
+
+%\include "paper19.ly" 
 %}
 
-\include "paper19.ly"
-\version "1.5.68"
+
+\version "1.6.0"
 
 
 
index 1e2617758a3113f4324cdcdf751b8fd31fe5c694..150b16a08fe2e2e71d0aa3b9d27a6f24960690c5 100644 (file)
@@ -1,7 +1,10 @@
 % NOT FINISHED!!!!
 
 \include "deutsch.ly"
-\include "paper19.ly"
+
+
+%% 19 is broken --hwn.
+%\include "paper19.ly"
 \version "1.5.71"
 
 \header {
index f26d273a55e56cdc437af5d9c8e371c22b63329f..01088abf39829f028af8820271032e03a5d10054 100644 (file)
@@ -10,8 +10,8 @@
         #`(,Beam::least_squares
         ,Beam::check_concave
         ,Beam::slope_damping)
-
+       \stemUp
         f'4 [f8 f] [f16 f] [f32 f] [f64 f] [f128 f] 
     }
     \paper{ linewidth = -1.0 }
-}          
\ No newline at end of file
+}          
diff --git a/input/regression/completion-heads-polyphony.ly b/input/regression/completion-heads-polyphony.ly
new file mode 100644 (file)
index 0000000..ceed250
--- /dev/null
@@ -0,0 +1,23 @@
+\header {\r
+\r
+    texidoc = "Completion heads are broken across bar lines. This was\r
+intended as a debugging tool, but it can be used to ease music entry.\r
+Completion heads are not fooled by polyphony with a different rhythm.\r
+"\r
+\r
+}\r
+\r
+\score{ \r
+       \context Staff \notes \relative c'' < \r
+           { c2. c bes2 } \\\r
+           { c,2. a8 g4 f4. g4 f  }\r
+       >\r
+\r
+       \paper {\r
+               \translator{\r
+                       \ThreadContext\r
+                       \remove "Note_heads_engraver"\r
+                       \consists "Completion_heads_engraver"\r
+               }\r
+       }\r
+}\r
index f93182b946c118e91ef03d864bd060cb19b04e40..d709989dd714261db5132d864d8b9b5e2619b22f 100644 (file)
@@ -11,8 +11,7 @@
 
 %\paper { linewidth = -1. }
 \score {
-  \addlyrics
-    \context Voice = "v" \notes  \relative c'' {
+< \context Voice = "v" \notes  \relative c'' {
       \property Staff.automaticMelismata = ##t
       \cadenzaOn
       a\breve  \bar "||" a1 \bar "|"  a \bar "|"  a \bar "||" \break a \bar "|" a \bar "|" a  \bar "|" a \bar "||" \break a \bar "|" a \bar "|."
        \property Lyrics . LyricText \override #'alignment = #-1
        \property Lyrics . LyricText \override #'begin-alignment = #8
 
-       "Particularly useful for reciting notes  "
-       left
+       "Particularly useful for reciting notes  "\breve
+       left1
 
        \property Lyrics . LyricText \override #'alignment = #0
-
        centered
 
        \property Lyrics . LyricText \override #'alignment = #1        
       }
       \context LyricsVoice = "v-2" \lyrics {
 %        \property LyricsVoice . stanza = "2:"
-        " with many syllables under them." l c r l l l x x x  note' true'
+        " with many syllables under them."\breve
+         l1 c r1 l
+         l1 l x x x
+
+                               % note' true'
+                               %% ? what are the last 2 for? 
       }
    >
+   >
 }
diff --git a/input/regression/lyric-combine-polyphonic.ly b/input/regression/lyric-combine-polyphonic.ly
new file mode 100644 (file)
index 0000000..f59cc14
--- /dev/null
@@ -0,0 +1,39 @@
+\header {
+
+texidoc ="polyphonic rhythms and rests don't disturb
+@code{\addlyrics}."
+
+}
+
+\score {
+    \notes {
+       \clef violin
+       \time 8/8
+       \key des \major
+       < \context Voice = one {
+          \voiceOne
+          \addlyrics
+          \notes {
+             bes'4 bes'4
+             bes'4 bes'4
+          }
+          \context Lyrics \lyrics
+          {
+             Do __ mi __ nus ex
+          }
+         }
+         \context Voice = two {
+          \voiceTwo
+          \addlyrics
+          \notes {
+             ees'8 r8 r8 r8 ees' r8 r8 r8 
+          }
+          \context Lyrics \lyrics
+         {
+             Do __ na
+          }
+         }
+       >
+    }
+    \paper { linewidth=-1.0 }
+}
index 19f94d9380cc1d616db050f4221c5b65a7386239..3ff3c6a685ead1d9ae3f7aaf127011716bea775f 100644 (file)
@@ -9,7 +9,7 @@ Beam. The note head is also rather naive, since the extent of the
 parens are also not seen by accidentals.
 "
        
-        }
+}
 
 #(define (parenthesize-callback callback)
    "Construct a function that will do CALLBACK and add parentheses.
@@ -34,8 +34,9 @@ GROB.  The dimensions of the molecule is not affected.
            (subject (callback grob))
 
            ; remember old size
-           (subject-dims (ly-get-molecule-extent subject 0))
-           )
+           (subject-dim-x (ly-get-molecule-extent subject 0))
+           (subject-dim-y (ly-get-molecule-extent subject 1))
+       )
 
         ; add parens
         (set! subject
@@ -44,7 +45,8 @@ GROB.  The dimensions of the molecule is not affected.
              0 -1 popen  0.2))
 
        ; revert old size.
-       (ly-set-molecule-extent! subject 0 subject-dims)
+       (ly-set-molecule-extent! subject 0 subject-dim-x)
+       (ly-set-molecule-extent! subject 1 subject-dim-y)
        subject
     )
      )
diff --git a/input/regression/prefatory-empty-spacing.ly b/input/regression/prefatory-empty-spacing.ly
new file mode 100644 (file)
index 0000000..2c3fb67
--- /dev/null
@@ -0,0 +1,13 @@
+
+\header {
+
+texidoc =" The A is atop an invisible barline. The barline
+although invisible, is also translated because it is the last one of
+the break alignment."
+    
+}
+
+\score{ \notes {
+a a a a \break
+\mark A
+a a a a}}
diff --git a/input/regression/property-once.ly b/input/regression/property-once.ly
new file mode 100644 (file)
index 0000000..74a566c
--- /dev/null
@@ -0,0 +1,15 @@
+\header {
+    texidoc = "Once properties take effect during a single time step only."
+}
+
+\score {
+      \notes \relative c' {
+         c4
+         \once \property Voice.Stem = #'()
+         c4
+         \once \property Voice.Stem \override #'thickness = #5.0
+         c4
+         c4
+  }
+}
index aabf7a0236896b725722a7b4cb50f460ebdd5810..70e7e370575f9cb7d5425b5e35a1a407e846616f 100644 (file)
@@ -1,6 +1,7 @@
 \version "1.5.68"
 
 \header { 
-texidoc = "Scripts may b4e stacked."
+texidoc = "Scripts may be stacked."
 }
-\score { \notes { c''->-. } }
+
+\score { \notes { c'''->-. } }
index a72e3b2ca31c2e34c528c85120121526f6c26c06..5962f343100985b1837f3db7e92a8ba6b567934c 100644 (file)
@@ -8,7 +8,8 @@
          
 \score { \notes
 \context Voice
-{\slurDown c4 ( g4 ) c''4
+{ \property Staff.minimumVerticalExtent \unset
+    \slurDown c4 ( g4 ) c''4
 
 }
 
index 740e45fb90a8b22120a360fdfa84b2564c73c953..2d71ed3361141bcd101e3e9bdfc4d433e19f3eda 100644 (file)
@@ -34,7 +34,7 @@ NB should have no bracket, B should have bracket.
        \times 4/6 { c_"shorter, no edges" f b  b f c}  
        \property Voice.TupletBracket \revert #'edge-height
        \property Voice.TupletBracket \revert #'shorten-pair
-       \property Voice.TupletBracket \override #'edge-widen = #'(-0.5 . 0.5)
+       \property Voice.TupletBracket \override #'edge-widen = #'(0.5 . 0.5)
        \times 2/3 { b^""^""^"angled edges" b b }
        \property Voice.TupletBracket \revert #'direction
        \times 2/3 { b b b }
index dcf406331e4e5ca4e545fefb3c5ea301d156da3b..debf2fa468f866975640111bafdb3063a3d3bbf6 100644 (file)
@@ -1,6 +1,6 @@
 depth = ../..
 
-EXAMPLES=sondag-morgen
+examples=sondag-morgen
 LOCALSTEPMAKE_TEMPLATES=ly mutopia
 
 include $(depth)/make/stepmake.make
index 51ee1f1430b1d52a9b5f8cd50f969c71ba31a152..71ec11cdbd12f1994d451713a66c74ba587cf725 100644 (file)
@@ -123,18 +123,18 @@ guitar = \notes \transpose c' {
     \time 2/2
     \key e \minor
     \property Staff.Arpeggio \override #'arpeggio-direction = #1
-       g'8-5_"FLANGE" fis'4-5 d'8-4 r8 h4.-3 |
-       a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-       <e1-\arpeggio-2 a-3 d'-4 g'-5 h'-6>
-       g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-       a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-       <e1-\arpeggio-2 a-3 d'-4 fis'-5 h'-6>
-       g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-       a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-       <e1-\arpeggio-2 a-3 d'-4 g'-5 h'-6>
-       g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-       a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-       <e1-\arpeggio-2 a-3 d'-4 fis'-5 h'-6>
+       g'8\5_"FLANGE" fis'4\5 d'8\4 r8 h4.\3 |
+       a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+       <e1-\arpeggio\2 a\3 d'\4 g'\5 h'\6>
+       g'8\5 fis'4\5 d'8\4 r8 h4.\3 |
+       a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+       <e1-\arpeggio\2 a\3 d'\4 fis'\5 h'\6>
+       g'8\5 fis'4\5 d'8\4 r8 h4.\3 |
+       a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+       <e1-\arpeggio\2 a\3 d'\4 g'\5 h'\6>
+       g'8\5 fis'4\5 d'8\4 r8 h4.\3 |
+       a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+       <e1-\arpeggio\2 a\3 d'\4 fis'\5 h'\6>
 
 }
 
index ba2ebd3ca19b7da7c5384f538334bb9a8798f250..5583a4a6d760f00d672bfd16aeeff176d6a2f636 100644 (file)
@@ -87,21 +87,23 @@ piar = \notes {
 }
 U = \sustainUp
 D = \sustainDown
+Su = { \su \stemDown }
+Sd = { \sd \stemUp }
 pial = \notes {
     \pial
-    a,, a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, <a,, a,>~
-    <a,,1 a,> |
+    \stemBoth a,, a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, <a,, a,>~
+    \stemBoth <a,,1 a,> |
     <d, d> |
     <d,2 d> r |
 }
 guitar = \notes {
     \guitar
-    e8-2 e-2 < a-3 d'-4> e-2 e-2 < a-3 d'-4> e-2 < h-3 e'-4> |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 e-2 <g8-3 c'-4 e'-5 a'-6> ~ |
-    <g1-3 c'-4 e'-5 a'-6>
-    <a1-3 d'-4 e'-5 a'-6> ~
-    <a2-3 d'-4 fis'-5 a'-6> r |
+    e8\2 e\2 < a\3 d'\4> e\2 e\2 < a\3 d'\4> e\2 < h\3 e'\4> |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 e\2 <g8\3 c'\4 e'\5 a'\6> ~ |
+    <g1\3 c'\4 e'\5 a'\6>
+    <a1\3 d'\4 e'\5 a'\6> ~
+    <a2\3 d'\4 fis'\5 a'\6> r |
 }
 
 cello = \notes {
index f266c958879d105a30afc395b8a9ff24f833e291..3ae4d121a7b38e6126e68b49b7869250eb5c9c41 100644 (file)
@@ -110,12 +110,15 @@ piar = \notes {
 }
 U = \sustainUp
 D = \sustainDown
+Su = { \su \stemDown }
+Sd = { \sd \stemUp }
+
 pial = \notes {
     \pial
-    a,,8 a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a,
-    a,, \su <g a h d' e' > \sd e, h, h,, \su <a h cis' e'> \sd d, e, |
-    <c,1 c>
+    \stemBoth a,,8 a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, a,
+    a,, \Su <g a h d' e' > \Sd e, h, h,, \Su <a h cis' e'> \Sd d, e, |
+    \stemBoth <c,1 c>
     <d, d>
     <a,, a,>
     <h,, h,>
@@ -124,16 +127,16 @@ pial = \notes {
 }
 guitar = \notes {
     \guitar
-    e8-2 e-2 < a-3 d'-4> e-2 e-2 < a-3 d'-4> e-2 < h-3 e'-4> |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
-    e-2 e-2 < a-3 d'-4> e-2 e-2 e-2 < h-3 e'-4> e-2 |
+    e8\2 e\2 < a\3 d'\4> e\2 e\2 < a\3 d'\4> e\2 < h\3 e'\4> |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 < d'\4 g'\5> e\2  |
+    e\2 e\2 < a\3 d'\4> e\2 e\2 e\2 < h\3 e'\4> e\2 |
     s1*0_"FLANGE"
     \repeat unfold 2 {
-       r8 d'-4 <h'-6 g'-5> d'-4 a'-5 d'-4 e'-4 d'-4
-       r8 d'-4 <h'-6 fis'-5> d'-4 a'-5 d'-4 e'-4 d'-4
+       r8 d'\4 <h'\6 g'\5> d'\4 a'\5 d'\4 e'\4 d'\4
+       r8 d'\4 <h'\6 fis'\5> d'\4 a'\5 d'\4 e'\4 d'\4
     }
-    r8 d'-4 <h'-6 g'-5> d'-4 a'-5 d'-4 e'-4 d'-4
-    <h4-3_"NO FLANGE" dis'-4 a'-5 cisis''-6> r8 < a-3 d'-4> e-2 < ais-3 dis'-4> e-2 < h-3 e'-4> |
+    r8 d'\4 <h'\6 g'\5> d'\4 a'\5 d'\4 e'\4 d'\4
+    <h4\3_"NO FLANGE" dis'\4 a'\5 cisis''\6> r8 < a\3 d'\4> e\2 < ais\3 dis'\4> e\2 < h\3 e'\4> |
 }
 
 cello = \notes {
index b19d9f362d53152f8f16e496fd8e8b8dcdf725ab..bc3fea6724e1e2b5cdebab1d6fc8a0a559a8141a 100644 (file)
@@ -63,11 +63,11 @@ U = \sustainUp
 D = \sustainDown
 pial = \notes {
     \pial
-    a,,8 a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
+    \stemBoth a,,8 a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
 }
 guitar = \notes {
     \guitar
-    e8-2 e-2 < a-3 d'-4> e-2 e-2 < a-3 d'-4> e-2 < h-3 e'-4> |
+    e8\2 e\2 < a\3 d'\4> e\2 e\2 < a\3 d'\4> e\2 < h\3 e'\4> |
 }
 
 cello = \notes {
index cf9b0970bfddbb03fd6a1fa56f6cead60304cd16..6296206f8aa3bb70b9312c1d8dd89897a1f4a65a 100644 (file)
@@ -121,39 +121,41 @@ piar = \notes {
 }
 U = \sustainUp
 D = \sustainDown
+Su = { \su \stemDown }
+Sd = { \sd \stemUp }
 pial = \notes {
     \pial
     \key e \minor
     \clef "F_8"
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a, |
-    a,, \su <g a h d' e' > \sd e, h, h,, \su <a h cis' e'> \sd d, e, |
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a, |
-    a,, a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, a, |
+    a,, \Su <g a h d' e' > \Sd e, h, h,, \Su <a h cis' e'> \Sd d, e, |
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, a, |
+    \stemBoth a,, a, e, <h,,8 h,> r <d,,4 d,> e,8 | 
 
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, <a,, a,>~
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, <a,, a,>~
     <a,,4. a,> <h,,8 h,>~<h,,4. h,> e,8 |
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a,
-    a,, a, a,, <d,, d,> r <dis,,4 dis,> <e,,8 e,> |
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, a,
+    \stemBoth a,, a, a,, <d,, d,> r <dis,,4 dis,> <e,,8 e,> |
 
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a,
-    a,, \su <g a h d' e'> \sd e, h, h,, \su <a h cis' e'> \sd d, e, |
-    e,,8 e, \su <g h d' e' g'> \sd g, g,, \su <g a h d' fis'> \sd e, a,
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, a,
+    a,, \Su <g a h d' e'> \Sd e, h, h,, \Su <a h cis' e'> \Sd d, e, |
+    e,,8 e, \Su <g h d' e' g'> \Sd g, g,, \Su <g a h d' fis'> \Sd e, a,
 }
 guitar = \notes {
     \guitar
     \key e \minor
     \time 4/4
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
-    e-2 e-2 < a-3 d'-4> e-2 e-2 e-2 < h-3 e'-4> e-2 |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
-    e-2 e-2 < a-3 d'-4> e-2 e-2 < a-3 d'-4> e-2 < h-3 e'-4> |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'8-4 a'-5> e-2 r8 <g-3_\ned h-4 d'-5 g'-6> ~  |
-    <g4.-3 h-4 d'-5 g'-6> <a8-3_\ned cis'-4 e'-5 a'-6> ~<a2-3 cis'-4 e'-5 a'-6> |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
-    e-2 e-2 e-2 < a-3 d'-4> e-2 < ais-3 dis'-4> e-2 < h-3 e'-4> |
-     e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
-    e-2 e-2 < a-3 d'-4> e-2 e-2 e-2 < h-3 e'-4> e-2 |
-    e8-2 < d'-4 g'-5> e-2 e-2 < e'-4 a'-5> e-2 < d'-4 g'-5> e-2  |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 < d'\4 g'\5> e\2  |
+    e\2 e\2 < a\3 d'\4> e\2 e\2 e\2 < h\3 e'\4> e\2 |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 < d'\4 g'\5> e\2  |
+    e\2 e\2 < a\3 d'\4> e\2 e\2 < a\3 d'\4> e\2 < h\3 e'\4> |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'8\4 a'\5> e\2 r8 <g\3_\ned h\4 d'\5 g'\6> ~  |
+    <g4.\3 h\4 d'\5 g'\6> <a8\3_\ned cis'\4 e'\5 a'\6> ~<a2\3 cis'\4 e'\5 a'\6> |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 < d'\4 g'\5> e\2  |
+    e\2 e\2 e\2 < a\3 d'\4> e\2 < ais\3 dis'\4> e\2 < h\3 e'\4> |
+     e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 < d'\4 g'\5> e\2  |
+    e\2 e\2 < a\3 d'\4> e\2 e\2 e\2 < h\3 e'\4> e\2 |
+    e8\2 < d'\4 g'\5> e\2 e\2 < e'\4 a'\5> e\2 < d'\4 g'\5> e\2  |
 }
 
 cello = \notes {
index cbd718bcd8b37b6097c6323cf465850d5eb665a1..81aedf008bdcb8375abe80abdf5ab1ad4b7641a1 100644 (file)
@@ -135,18 +135,18 @@ pial = \notes {
 guitar = \notes{
     \guitar
     \time 2/2
-    r2 <d'_"FLANGE"-4 g'-5 h'-6> |
+    r2 <d'_"FLANGE"\4 g'\5 h'\6> |
     \property Staff.Arpeggio \override #'arpeggio-direction = #1
-    a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-    <e1-\arpeggio-2 a-3 d'-4 g'-5 h'-6>
-    g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-    a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-    <e1-\arpeggio-2 a-3 d'-4 fis'-5 h'-6>
-    g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-    a8-3( d'-4 a'-5 a-3 d'-4 a'-5 a-3 )d'-4 |
-    <e1-\arpeggio-2 a-3 d'-4 g'-5 h'-6>
-    g'8-5 fis'4-5 d'8-4 r8 h4.-3 |
-    <e,1-\arpeggio-1 e-2 a-3 d'-4 g'-5 h'-6>
+    a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+    <e1-\arpeggio\2 a\3 d'\4 g'\5 h'\6>
+    g'8\5 fis'4\5 d'8\4 r8 h4.\3 |
+    a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+    <e1-\arpeggio\2 a\3 d'\4 fis'\5 h'\6>
+    g'8\5 fis'4\5 d'8\4 r8 h4.\3 |
+    a8\3( d'\4 a'\5 a\3 d'\4 a'\5 a\3 )d'\4 |
+    <e1-\arpeggio\2 a\3 d'\4 g'\5 h'\6>
+    g'8\5 fis'4\5 d'8\4 r8 h4.\3 |
+    <e,1-\arpeggio\1 e\2 a\3 d'\4 g'\5 h'\6>
 }
 
 cello = \notes {
index f24d27e25a80a385195d42c5c5abe9bf3da88655..250e4fb09093a5b331c878f01c117795a33d46f9 100644 (file)
@@ -64,7 +64,7 @@ pial = \notes {
 guitar = \notes {
     \guitar
     \relative c' {
-       <d,2-2 g-3 h-4 e-5 a-6> r2 |
+       <d,2\2 g\3 h\4 e\5 a\6> r2 |
     }
 }
 
index 897e37c4d6e5ebe0f983d0fbad058087b80251cd..0ae77fffc076aef88d68276d8a542e02f772cb86 100644 (file)
@@ -69,7 +69,7 @@ pial = \notes {
 }
 guitar = \notes {
     \guitar
-    r4 e8-2 < a-3 d'-4> e-2 < ais-3 dis'-4> e-2 < h-3 e'-4> |
+    r4 e8\2 < a\3 d'\4> e\2 < ais\3 dis'\4> e\2 < h\3 e'\4> |
 }
 
 cello = \notes {
index 7438a03bda407754b9a9cc24835cb56e38a0a8d5..ec637df9ac1420c36ba6e476c4278bc32ff92f5e 100644 (file)
@@ -210,18 +210,18 @@ guitar = \notes {
        \time 7/8
        s1*0_"NO FLANGE"
        \repeat percent 3 {
-           [<f8-4_\ned b-5\mu d-6> <f-4_\op b-5\ac d-6> <f-4_\ned b-5\mu d-6>] [<f-4_\op a-5\ac d-6> <f-4_\ned a-5\mu d-6>] [<f-4_\op a-5\mu d-6><f-4_\ned a-5\ac d-6>]|
-           [<es-4_\op g-5\mu c-6> <es-4_\ned g-5\ac c-6> <es-4_\op g-5\mu c-6>] [<es-4_\ned g-5\ac c-6> <es-4_\op g-5\mu c-6>][<f-4_\ned a-5\ac d-6> <f-4_\op a-5\mu d-6>] |
+           [<f8\4_\ned b\5\mu d\6> <f\4_\op b\5\ac d\6> <f\4_\ned b\5\mu d\6>] [<f\4_\op a\5\ac d\6> <f\4_\ned a\5\mu d\6>] [<f\4_\op a\5\mu d\6><f\4_\ned a\5\ac d\6>]|
+           [<es\4_\op g\5\mu c\6> <es\4_\ned g\5\ac c\6> <es\4_\op g\5\mu c\6>] [<es\4_\ned g\5\ac c\6> <es\4_\op g\5\mu c\6>][<f\4_\ned a\5\ac d\6> <f\4_\op a\5\mu d\6>] |
        }
-       [<f8-4_\ned b-5\mu d-6> <f-4_\op b-5\ac d-6> <f-4_\ned b-5\mu d-6>] [<f-4_\op a-5\ac d-6> <f-4_\ned a-5\mu d-6>] [<f-4_\op a-5\mu d-6><f-4_\ned a-5\ac d-6>]|
+       [<f8\4_\ned b\5\mu d\6> <f\4_\op b\5\ac d\6> <f\4_\ned b\5\mu d\6>] [<f\4_\op a\5\ac d\6> <f\4_\ned a\5\mu d\6>] [<f\4_\op a\5\mu d\6><f\4_\ned a\5\ac d\6>]|
        \time 9/8
 
-       <d,4.-2 g-3 h-4 e-5 a-6> r4 [<fis'8-4_\ned a-5\ac d-6> <fis8-4_\op a-5\mu d-6>] [<fis8-4_\ned a-5\ac d-6> <fis8-4_\op a-5\mu d-6>] |
+       <d,4.\2 g\3 h\4 e\5 a\6> r4 [<fis'8\4_\ned a\5\ac d\6> <fis8\4_\op a\5\mu d\6>] [<fis8\4_\ned a\5\ac d\6> <fis8\4_\op a\5\mu d\6>] |
        \time 7/8
        \key g \major
        \repeat percent 3 {
-           [<g8-4_\ned h-5\mu d-6> <g-4_\op h-5\ac d-6> <g-4_\ned h-5\mu d-6>] [<fis-4_\op a-5\ac d-6> <fis-4_\ned a-5\mu d-6>] [<fis-4_\op a-5\mu d-6><fis-4_\ned a-5\ac d-6>]|
-           [<e-4_\op g-5\mu c-6> <e-4_\ned g-5\ac c-6> <e-4_\op g-5\mu c-6>] [<e-4_\ned g-5\ac c-6> <e-4_\op g-5\mu c-6>][<fis-4_\ned a-5\ac d-6> <fis-4_\op a-5\mu d-6>] |
+           [<g8\4_\ned h\5\mu d\6> <g\4_\op h\5\ac d\6> <g\4_\ned h\5\mu d\6>] [<fis\4_\op a\5\ac d\6> <fis\4_\ned a\5\mu d\6>] [<fis\4_\op a\5\mu d\6><fis\4_\ned a\5\ac d\6>]|
+           [<e\4_\op g\5\mu c\6> <e\4_\ned g\5\ac c\6> <e\4_\op g\5\mu c\6>] [<e\4_\ned g\5\ac c\6> <e\4_\op g\5\mu c\6>][<fis\4_\ned a\5\ac d\6> <fis\4_\op a\5\mu d\6>] |
        }
        \time 4/4
        s1*0-\mf \repeat unfold 2 <c2-3 e-4 g-5 h-6>
index ed1f2285c5217b07d333150c89ab8a860518fab6..6e0349dca3ab9793149b1237ded7683980cbb2ad 100644 (file)
@@ -15,6 +15,7 @@ sd = \translator Staff = down
     piece = "Score"
     tagline = "\\Large{Form: Intro Vers$_1$ Vers$_2$ Omkvæd Vers$_1$ Omkvæd Omkvæd Outro  }"
 }
+
 \score {
     \notes <
        \property Score.automaticMelismata = ##t
@@ -78,6 +79,10 @@ sd = \translator Staff = down
            \context TabStaff=gui <
                \property Staff.instrument = "Guitar    "
                \property Staff.instr = "gt    "
+               \property TabStaff.stringOneTopmost = ##f
+               \property TabStaff.highStringOne = ##f
+               \property TabStaff.stringTunings = #(reverse guitar-tunings)
+
                \context TabVoice \guitar
            >
            \context Staff = cello <
index 82fc916468e100fa44ddcb570a6e24caa012f603..e33a3600a5f5a0de46021bc950329b0bbf9cf423 100644 (file)
@@ -15,4 +15,4 @@ EXTRA_DISTFILES=features.abc
 
 include $(depth)/make/stepmake.make 
 
-TITLE=LilyPond Feature Tests
+TITLE=LilyPond Tips and Tricks
index 569bd6a31b0087e7f2f87cd88ddee4668e8e5d71..d26f5292bf66b3f2776ee293090b87faa55fd6b7 100644 (file)
@@ -3,7 +3,40 @@
 \score { 
   \context Voice \notes\relative c {
     \time 3/4
-       cisis'' cisis! cisis? |
+       \property Staff.Accidental \set #'style = #'default
+       cisis''^"Accidental style = \#'default" cisis! cisis? |
+       cis cis! cis? | 
+       c c! c? |
+       ces ces! ces? |
+       ceses ceses! ceses? |
+       \break
+       
+       \property Staff.Accidental \set #'style = #'hufnagel
+       cisis^"Accidental style = \#'hufnagel" cisis! cisis? |
+       cis cis! cis? | 
+       c c! c? |
+       ces ces! ces? |
+       ceses ceses! ceses? |
+       \break
+       
+       \property Staff.Accidental \set #'style = #'medicaea
+       cisis^"Accidental style = \#'medicaea" cisis! cisis? |
+       cis cis! cis? | 
+       c c! c? |
+       ces ces! ces? |
+       ceses ceses! ceses? |
+       \break
+       
+       \property Staff.Accidental \set #'style = #'vaticana
+       cisis^"Accidental style = \#'vaticana" cisis! cisis? |
+       cis cis! cis? | 
+       c c! c? |
+       ces ces! ces? |
+       ceses ceses! ceses? |
+       \break
+       
+       \property Staff.Accidental \set #'style = #'mensural
+       cisis^"Accidental style = \#'mensural" cisis! cisis? |
        cis cis! cis? | 
        c c! c? |
        ces ces! ces? |
index abeb31b81dced823ebf7e64f9f777b89b9287833..302000f75f5fadbbebf66997c2a9f2cdecb217e5 100644 (file)
@@ -1,60 +1,36 @@
 \version "1.5.68"
 \header {
     title      = "ancient font test"
-    date       = "2000"
+    date       = "2002"
 }
 
-
-
 \include "paper26.ly"
 
-global =  \notes {
+upperStaff =  \context GregorianStaff = upperStaff <
+  \context GregorianVoice <
     \property Score.timing = ##f
-%   \property Score.forceAccidental = ##t
-    \property Staff.TimeSignature \set #'font-family = #'ancient
-%   \property Staff.TimeSignature \override #'style = #'mensural
-}
+%   \property Score.forceAccidental = ##t %%%%%%%% FIXME: what happened to this property?
 
-upperVoice =  \context Staff = upperVoice <
-    \global
-    
     % this is broken until further notice -- see refman
     % \property Staff.StaffSymbol \override #'line-count = #4
     \context Staff \outputproperty #(make-type-checker 'staff-symbol-interface)
       #'line-count = #4
 
     \notes \transpose c' {
-       \property Staff.Clef \set #'font-family = #'ancient
-       \property Staff.KeySignature \set #'font-family = #'ancient
        \property Staff.KeySignature \override #'style = #'vaticana
-       \property Staff.Accidental \set #'font-family = #'ancient
        \property Staff.Accidental \override #'style = #'vaticana
-       \property Staff.Custos \set #'font-family = #'ancient
-       \property Staff.Custos \override #'style = #'vaticana
-       \property Staff.Custos \override #'neutral-position = #4
-       \property Staff.Custos \override #'neutral-direction = #-1
-       \property Staff.Custos \override #'adjust-if-on-staffline = ##t
-       \property Voice.NoteHead \set #'font-family = #'ancient
        \property Voice.NoteHead \override #'style = #'vaticana_punctum
-       \property Voice.Porrectus \override #'style = #'vaticana
-       \property Voice.Porrectus \override #'solid = ##t
-       \property Voice.Porrectus \override #'add-stem = ##t
-       \property Voice.Porrectus \override #'direction = #-1
-       \property Voice.Porrectus \override #'thickness = #0.5
        \key es \major
        \clef "vaticana_fa2"
        c!1 des! e! f! ges!
 
-%      \property Staff.clefGlyph = #"clefs-vaticana_do"
-%      \property Staff.clefPosition = #1
-%      \property Staff.clefOctavation = #0 
-       \clef "vaticana_do2"
-
        \property Voice.NoteHead \override #'style = #'vaticana_inclinatum
-       a! b!
+       a! b! ces'
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+%      \break % 1 (8*1)
+
        \property Voice.NoteHead \override #'style = #'vaticana_virga
-       ces' b! des'! \~ ges! \~ fes!
+       b! des'! ges! fes!
        \breathe
        \clef "vaticana_fa1"
        \property Voice.NoteHead \override #'style = #'vaticana_quilisma
@@ -62,6 +38,8 @@ upperVoice =  \context Staff = upperVoice <
        \property Voice.NoteHead \override #'style = #'vaticana_rvirga
        c d
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+%      \break %2 (8*1)
+
        \property Voice.NoteHead \override #'style = #'vaticana_rvirga
        es f
        \property Voice.NoteHead \override #'style = #'vaticana_lpes
@@ -72,6 +50,8 @@ upperVoice =  \context Staff = upperVoice <
        g f
        \property Voice.NoteHead \override #'style = #'vaticana_plica
        \property Staff.BarLine \override #'bar-size = #2.0 \bar "|"
+%      \break % 3 (8*1)
+
        es d
        \property Voice.NoteHead \override #'style = #'vaticana_epiphonus
        c d
@@ -85,13 +65,17 @@ upperVoice =  \context Staff = upperVoice <
        \clef "medicaea_fa2"
        ces! des!
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+%      \break % 4 (8*1)
+
        e! f! ges!
        \clef "medicaea_do2"
-       \property Voice.NoteHead \override #'style = #'medicaea_subbipunctum
+       \property Voice.NoteHead \override #'style = #'medicaea_inclinatum
        a! b! ces'!
        \property Voice.NoteHead \override #'style = #'medicaea_virga
        b! a!
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+%      \break % 5 (8*1)
+
        ges! fes!
        \clef "medicaea_fa1"
        \property Voice.NoteHead \override #'style = #'medicaea_rvirga
@@ -104,6 +88,8 @@ upperVoice =  \context Staff = upperVoice <
        \clef "hufnagel_fa2"
        ces! des! es!
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+%      \break % 6 (8*1)
+
        fes! ges!
        \clef "hufnagel_do2"
        \property Voice.NoteHead \override #'style = #'hufnagel_lpes
@@ -111,16 +97,23 @@ upperVoice =  \context Staff = upperVoice <
        \property Voice.NoteHead \override #'style = #'hufnagel_virga
        bes! as!
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+%      \break % 7 (8*1)
+
        ges! fes!
        \clef "hufnagel_do_fa"
        \property Voice.NoteHead \override #'style = #'hufnagel_punctum
        es! des! ces! des! es! fes!
        \bar "||"
+%      \break % 8 (8*1)
+
+       s32*1
+%      \break % 12 (32*1)
     }
+  >
 >
 
-lowerVoice =  \context Staff = lowerNotes <
-    \global
+lowerStaff =  \context MensuralStaff = lowerStaff <
+  \context MensuralVoice <
     
     % this is broken until further notice -- see refman
     % \property Staff.StaffSymbol \override #'line-count = #5
@@ -129,130 +122,171 @@ lowerVoice =  \context Staff = lowerNotes <
 
     \notes \transpose c' {
        \property Voice.autoBeaming = ##f
-       \property Staff.Clef \set #'font-family = #'ancient
-       \property Staff.KeySignature \set #'font-family = #'ancient
-       \property Staff.KeySignature \override #'style = #'mensural
-       \property Staff.Accidental \set #'font-family = #'ancient
-       \property Staff.Accidental \override #'style = #'mensural
-       \property Staff.Custos \set #'font-family = #'ancient
-       \property Staff.Custos \override #'style = #'mensural
-       \property Staff.Custos \override #'neutral-position = #3
-       \property Staff.Custos \override #'neutral-direction = #-1
-       \property Staff.Custos \override #'adjust-if-on-staffline = ##t
-       \property Voice.NoteHead \set #'font-family = #'ancient
        \property Voice.NoteHead \override #'style = #'neo_mensural
-       \property Voice.Stem \set #'font-family = #'ancient % ancient flags
-       \property Voice.Rest \set #'font-family = #'music
        \property Voice.Rest \override #'style = #'neo_mensural
-       \property Voice.Porrectus \override #'style = #'mensural
-       \property Voice.Porrectus \override #'solid = ##f
-       \property Voice.Porrectus \override #'add-stem = ##t
-       \property Voice.Porrectus \override #'thickness = #0.7
-%      \property Voice.Porrectus \override #'auto-properties = ##t
-%      \property Voice.Porrectus \override #'width = #3.0
        \key a \major
 
-       % IMPORTANT NOTE:
-       %
-       % The porrectus syntax is definitely subject to change.  For
-       % proper use, it may eventually change into something like this:
-       %
-       % \startLigature e \~ c \endLigature
-       %
-       % The reason is that there needs to be some enclosing instance
-       % for correct handling of line breaking, alignment with
-       % adjacent note heads, and placement of accidentals.
+% FIXME: lily crashes on some (invalid?) ligatures with:
+%   ERROR: In procedure gh_scm2int:
+%   ERROR: Wrong type argument in position 1: ()
 
-       \clef "neo_mensural_c2"
-       cis' e' \~ d' gis' \~ e'
+% FIXME: lily emits "Programming error: Infinity or NaN encountered"
+% on many ligatures such as BB.
+
+       cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \]
        \property Staff.forceClef = ##t
        \clef "neo_mensural_c2"
+       cis1
+       \bar "|"
+%      \break % 2 (16*1)
 
-       fis' \~ b cis''
-       b \~ a a \~ fis
+       \[ g\breve dis''\longa \]
+       b\breve \[ a\longa d\longa \]
        \clef "petrucci_c2"
-       cis \~ fis ces1 % \bar "|"
+%      \break % 4 (16*1)
 
+       fis1 ces1
        \clef "petrucci_c2"
        r\longa
        \property Staff.forceClef = ##t
        \clef "mensural_c2"
-       r\breve r1 r2
-       \clef "mensural_g"
-       r4 r8 r16 r16 \bar "|"
+       r\breve
+       \bar "|"
+%      \break % 5 (8*1)
 
+       r2
+       \clef "mensural_g"
+       r4 r8 r16 r16
        \property Voice.NoteHead \override #'style = #'mensural
        \property Voice.Stem \override #'style = #'mensural
        \property Voice.Stem \override #'thickness = #1.0
-       \property Voice.Rest \set #'font-family = #'ancient
        \property Voice.Rest \override #'style = #'mensural
        \clef "petrucci_f"
-       c8 b, c16 b, c32 b, c64 b, c b,
-       d8 e  d16 e  d32 e  d64 e  d e
+       c8 b, c16 b, c32 b, c64 b, c64 b,
+       d8 e  d16 e  d32 e  d64 e  d64 e
        r\longa
        \property Staff.forceClef = ##t
        \clef "petrucci_f"
-       r\breve r1 % \bar "|"
-       \clef "mensural_f"
+       r\breve
+       \bar "|"
+%      \break % 6 (8*1)
 
+       r\breve 
+       \clef "mensural_f"
        % FIXME: must set Voice.Stem style to #'neo_mensural to avoid
        % segmentation fault on r8/r16/r32.  (Strange: what has
        % Voice.Stem style to do with mensural rests?)
        \property Voice.Stem \override #'style = #'neo_mensural
-       r2 r4 r8 r16 r32 r32
+       r2 r4 r8 r16 r16
        \property Voice.Stem \override #'style = #'mensural
-
        \property Staff.forceClef = ##t
        \clef "mensural_f"
-       e2 f g
+       e\breve f g a1
        \clef "mensural_g"
+%      \break % 7 (8*1)
 
-       bes'! \~ as'! \~ cis''!
-       bes'! \~ fis'! as'! \~ ges'!
+       \[ bes'!\longa a'!\longa c''!\longa \]
+       e'1 d' c' d' \bar "|"
+       \bar "|"
+%      \break % 9 (16*1)
+
+       bes'!\longa fis'!1 as'!1 ges'!\longa % lig
        \property Staff.forceClef = ##t
        \clef "mensural_g"
-       e' d' c'1 \bar "|"
+       e'2 d' c' \bar "|"
+%      \break % 11 (16*1)
 
        \property Staff.forceClef = ##t
        \clef "petrucci_g"
-       c'2 d' e' f' g'
+       c'2 d' e' f'
        \clef "petrucci_g"
-       as'! bes'! cis''!
+       g' as'! bes'! cis''!
        bes'! as'! gis'! fis'!
        \property Staff.forceClef = ##t
        \clef "mensural_g"
        es'! des'! cis'!1 \bar "||"
+%      \break % 12 (8*1)
     }
+  >
 >
 
 \score {
-    \context ChoirStaff <
-       \upperVoice
-       \lowerVoice
+    \context Score <
+       \upperStaff
+       \lowerStaff
     >
     \paper {
-%      \paperTwentysix
        linewidth = 17.25\cm
        textheight = 26.0\cm
        stafflinethickness = \staffspace / 5.0
        indent = 0.0
+       \translator {
+           \ScoreContext
+           \accepts MensuralStaff
+           \accepts GregorianStaff
+%          timing = ##f %%%%%%%% FIXME: this has no effect
+       }
+       \translator {
+           \VoiceContext
+           \name MensuralVoice
+           \alias Voice
+           \remove Ligature_bracket_engraver
+           \consists Mensural_ligature_engraver
+           NoteHead \set #'style = #'mensural
+%          Stem \set #'style = #'mensural %%%%%%%% FIXME: this core dumps
+           Stem \set #'thickness = #1.0
+           Rest \set #'style = #'mensural
+           autoBeaming = ##f
+       }
+       \translator {
+           \VoiceContext
+           \name GregorianVoice
+           \alias Voice
+           \remove Ligature_bracket_engraver
+%          \consists Gregorian_ligature_engraver %%%%%%%% TODO: not yet implemented
+           NoteHead \set #'style = #'vaticana_punctum
+           autoBeaming = ##f
+       }
        \translator {
            \StaffContext
+           \name MensuralStaff
+           \alias Staff
+           \accepts MensuralVoice
            \consists Custos_engraver
-%          Custos \override #'style = #'mensural
-           \remove Time_signature_engraver
-%          StaffSymbol \override #'thickness = #2.0
-%          StaffSymbol \override #'line-count = #4
+           TimeSignature \set #'style = #'mensural
+           KeySignature \set #'style = #'mensural
+           Accidental \set #'style = #'mensural
+           Custos \set #'style = #'mensural
+           Custos \set #'neutral-position = #3
+           Custos \set #'neutral-direction = #-1
+           Custos \set #'adjust-if-on-staffline = ##t
+           clefGlyph = #"clefs-petrucci_c2"
+           clefPosition = #-2
+           clefOctavation = #0 
        }
        \translator {
-           \ScoreContext
-%          \remove System_start_delimiter_engraver
-%          systemStartDelimiter \override #'glyph = #'brace
+           \StaffContext
+           \name GregorianStaff
+           \alias Staff
+           \accepts GregorianVoice
+           \consists Custos_engraver
+           \remove Time_signature_engraver
+           StaffSymbol \set #'thickness = #2.0
+           StaffSymbol \set #'line-count = #4
+           KeySignature \set #'style = #'vaticana
+           Accidental \set #'style = #'vaticana
+           Custos \set #'style = #'vaticana
+           Custos \set #'neutral-position = #4
+           Custos \set #'neutral-direction = #-1
+           Custos \set #'adjust-if-on-staffline = ##t
+           clefGlyph = #"clefs-vaticana_do"
+           clefPosition = #1
+           clefOctavation = #0 
        }
        \translator {
-           \ChoirStaffContext
-           \remove System_start_delimiter_engraver
-%          systemStartDelimiter \override #'glyph = #'empty
-       }
+           \HaraKiriStaffContext
+           \accepts MensuralVoice
+           \accepts GregorianVoice
+        }
     }
 }
index 3a867e63b7a270761f361199359f6f27d5d59b91..2c83288fc327c3b8bbfbab4df78f4febab690ae5 100644 (file)
@@ -5,8 +5,7 @@ texidoc="Should use old style."
 
 \score {
   \notes { 
-    \property Staff.TimeSignature \override #'style = #'oldC4/4
-    \property Staff.TimeSignature \override #'font-family = #'ancient
+    \property Staff.TimeSignature \override #'style = #'neo_mensural
     s1 
   }
 }
diff --git a/input/test/bar-number-every-fifth.ly b/input/test/bar-number-every-fifth.ly
new file mode 100644 (file)
index 0000000..fbcde9a
--- /dev/null
@@ -0,0 +1,12 @@
+\score {
+    \context Staff \notes \transpose c'' {
+       \property Score.BarNumber \override #'break-visibility = #end-of-line-invisible
+       \property Score.barNumberVisibility = #(every-nth-bar-number-visible 5)
+       \property Score.BarNumber \override #'molecule-callback =
+       #(make-molecule-boxer 0.1 0.25 0.25 Text_item::brew_molecule)
+       \property Score.BarNumber \override #'font-relative-size = #1
+       
+       \repeat unfold 11 { c d e f g a b c' } \bar "|."
+    }
+}
+
index 7767e4f36b606688dd3dc163f7477ebdd74b21bc..a87f5e4dbd055c50de97b6bd1b404d971ee77414 100644 (file)
@@ -1,53 +1,27 @@
-\version "1.5.68"
+\version "1.6.1"
 \header {
 
 texidoc = "overriding the molecule callback can also be used to draw a
  box around arbitrary grobs.
 
- TODO: check whether the corners are really correct.
-
  TODO:  circled molecules.
   
  "
 }
 
-#(define (make-molecule-boxer callback)
-  (define (molecule-boxer grob)
-  (let*
-   (
-    (mol    (callback grob))
-    (box-padding 0.1)
-    (x-ext (widen-interval (ly-get-molecule-extent mol 0) box-padding))
-    (y-ext (widen-interval (ly-get-molecule-extent mol 1) box-padding))
-    (rule-thick 0.1)
-    (x-rule (box-molecule (widen-interval x-ext rule-thick)
-                              (cons 0 rule-thick)))
-    (y-rule (box-molecule (cons 0 rule-thick) y-ext))
-    )
-    
-    (set! mol (ly-combine-molecule-at-edge mol 0 1 y-rule (* 0.5 box-padding)))
-    (set! mol (ly-combine-molecule-at-edge mol 0 -1  y-rule (* 0.5 box-padding)))
-    (set! mol (ly-combine-molecule-at-edge mol 1 1  x-rule 0.0))  
-    (set! mol (ly-combine-molecule-at-edge mol 1 -1 x-rule 0.0))
-    
-    mol
- ))
- molecule-boxer
- )
-
 
  \score { \notes \relative c''  {
 
  \property Voice.TextScript \override #'molecule-callback =
-   #(make-molecule-boxer Text_item::brew_molecule)
+   #(make-molecule-boxer 0.1 0.3 0.2 Text_item::brew_molecule)
 
    c'4^"foo"
 
 \property Voice.Stem \override #'molecule-callback =
-   #(make-molecule-boxer Stem::brew_molecule)
+   #(make-molecule-boxer 0.05 0.25 0.25 Stem::brew_molecule)
 
 \property Score.RehearsalMark \override #'molecule-callback =
-   #(make-molecule-boxer Text_item::brew_molecule)
+   #(make-molecule-boxer 0.15 0.3 0.3 Text_item::brew_molecule)
 
       c8
 \property Voice.Stem \revert #'molecule-callback
index aea0e8f94374759c767383eaa6029e542287a562..d92f586bd7cc7caf487d28f2e7ef9a0f7a9cc7a0 100644 (file)
@@ -17,12 +17,13 @@ Would this be acceptable/good enough/convenient for entry?
 
 %}
 
+% used to be quarter notes here. Why? --hwn 
 scales =  \notes \transpose c'' \chords{
                %<c1 e g>
-               c1:m c:min c4:dim c:aug c:sus c:maj
-                c1:6 c4:7 c:9 c:11 c:13
+               c1:m c:min c:dim c:aug c:sus c:maj
+                c1:6 c:7 c:9 c:11 c:13
                c:m7 c:m.sus c:m7.sus
-               c4:dim7 c:dim9 c2:7^5 
+               c:dim7 c:dim9 c2:7^5 
                c:13^5.7.9.11
                % c1:7^5 c:13^5
                c1 g d a e b fis
diff --git a/input/test/clef-end-of-line.ly b/input/test/clef-end-of-line.ly
new file mode 100644 (file)
index 0000000..d0245f7
--- /dev/null
@@ -0,0 +1,32 @@
+\header {
+
+    texidoc = "Scales, but with clef and key signature at the end of the line."
+
+}
+
+\score {
+    \notes \transpose c'' {
+       \property Staff.Clef \set #'break-visibility = #end-of-line-visible
+       \property Staff.KeySignature \set #'break-visibility = #end-of-line-visible
+       \property Staff.explicitClefVisibility = #end-of-line-visible
+       \property Staff.explicitKeySignatureVisibility = #end-of-line-visible
+
+       % We want the time sig to take space, otherwise there is not
+       % enough white at the start of the line.
+       %
+       
+       \property Staff.TimeSignature \set #'transparent = ##t
+       \property Score.defaultBarType = #"empty"
+       
+       c1 d e f g a b c
+       \key d \major
+       \break
+
+       % see above.
+       \time 4/4
+       
+       d e fis g a b cis d 
+       \key g \major
+       \break
+       \time 4/4    
+} }
index 725996d7fd9bebffb7a3dc71f95ec1536257f2b0..770717bbbe170e93be409c8183b6a1ab43ea726f 100644 (file)
@@ -1,9 +1,34 @@
 \version "1.5.68"
+\header {
+    texidoc = "custodes in various styles."
+}
+
+\score {
+    \notes {
+       \property Staff.Custos \set #'neutral-position = #4
+       \property Staff.Custos \set #'neutral-direction = #-1
+       \property Staff.Custos \set #'adjust-if-on-staffline = ##t
+
+       \property Staff.Custos \set #'style = #'hufnagel
+       c'1^"Custos style = \#'hufnagel"
+       \break < d'1 a' f''>
 
+       \property Staff.Custos \set #'style = #'medicaea
+       c'1^"Custos style = \#'medicaea"
+       \break < d'1 a' f''>
 
-\score { \notes { c'1 \break < d'1 f' a'>  }
-\paper {\translator { \StaffContext
-\consists Custos_engraver
-}}
+       \property Staff.Custos \set #'style = #'vaticana
+       c'1^"Custos style = \#'vaticana"
+       \break < d'1 a' f''>
 
+       \property Staff.Custos \set #'style = #'mensural
+       c'1^"Custos style = \#'mensural"
+       \break < d'1 a' f''>
+    }
+    \paper {
+       \translator {
+           \StaffContext
+           \consists Custos_engraver
+       }
+    }
 }
diff --git a/input/test/empty-staffs.ly b/input/test/empty-staffs.ly
new file mode 100644 (file)
index 0000000..6c6a051
--- /dev/null
@@ -0,0 +1,23 @@
+\header {
+    
+texidoc = "Blank music paper, another example: empty staffs and a
+tablature staff."
+
+}
+
+emptymusic = \notes { \repeat unfold 4  { s1\break }  \bar "|." }
+
+\score  {
+\notes  <
+       \context Staff \emptymusic
+       \context TabStaff \emptymusic
+       >
+
+
+  \paper {
+    \translator {
+      \ScoreContext
+      \remove Bar_number_engraver
+    }
+  }
+}
index 9a063b5c052a59b6aa4a9a2ec42d36047cde07a3..39c001d2b7cbbf6d66abc59e80b2395d84832ad2 100644 (file)
@@ -6,15 +6,13 @@
 
 \include "paper26.ly"
 
-% Note the horizontal alignment of the fermatas that obeys to the
+% Note that the horizontal alignment of the fermatas obeys to the
 % graphical width of the ligatures rather to the musical moment in time.
 % This is intended behaviour.
 
 voice = \notes \transpose c'' {
   \property Score.timing = ##f
   \property Score.defaultBarType = "empty"
-  \property Voice.NoteHead \set #'font-family = #'ancient
-  \property Voice.NoteHead \override #'style = #'mensural
   g\longa c\breve a\breve f\breve d'\longa^\fermata
   \bar "|"
   \[
@@ -31,22 +29,18 @@ voice = \notes \transpose c'' {
   \bar "||"
 }
 
-upperStaff = \context Staff = upperStaff <
-  \context MensuralVoice <
-    \voice
-  >
->
-
-lowerStaff = \context Staff = lowerStaff <
-  \context TranscribedVoice <
-    \voice
-  >
->
-
 \score {
     \context ChoirStaff <
-       \upperStaff
-       \lowerStaff
+       \context MensuralStaff = upperStaff <
+           \context MensuralVoice <
+               \voice
+           >
+       >
+       \context Staff = lowerStaff <
+           \context Voice <
+               \voice
+           >
+       >
     >
     \paper {
        stafflinethickness = \staffspace / 5.0
@@ -56,23 +50,32 @@ lowerStaff = \context Staff = lowerStaff <
            \alias Voice
            \remove Ligature_bracket_engraver
            \consists Mensural_ligature_engraver
-       }
-       \translator {
-           \VoiceContext
-           \name TranscribedVoice
-           \alias Voice
-           \remove Mensural_ligature_engraver
-           \consists Ligature_bracket_engraver
+           NoteHead \set #'style = #'mensural
        }
        \translator {
            \StaffContext
+           \name MensuralStaff
+           \alias Staff
            \accepts MensuralVoice
-           \accepts TranscribedVoice
-        }
+           \consists Custos_engraver
+           TimeSignature \set #'style = #'mensural
+           KeySignature \set #'style = #'mensural
+           Accidental \set #'style = #'mensural
+           Custos \set #'style = #'mensural
+           Custos \set #'neutral-position = #3
+           Custos \set #'neutral-direction = #-1
+           Custos \set #'adjust-if-on-staffline = ##t
+           clefGlyph = #"clefs-petrucci_g"
+           clefPosition = #-2
+           clefOctavation = #-0
+       }
        \translator {
            \HaraKiriStaffContext
            \accepts MensuralVoice
-           \accepts TranscribedVoice
         }
+       \translator {
+           \ScoreContext
+           \accepts MensuralStaff
+       }
     }
 }
diff --git a/input/test/poly-metric.ly b/input/test/poly-metric.ly
new file mode 100644 (file)
index 0000000..7a5b136
--- /dev/null
@@ -0,0 +1,32 @@
+\header {
+    texidoc = "Polymetric music with aligned note values can be written
+ by moving the timing engraver to staff context."
+}
+
+\score {
+
+    \notes
+    <
+       \context Staff = SA
+       {
+           \time 4/4
+       c1 c1 c1
+       \bar "|."
+    }
+    \context Staff= SB {
+       \time 3/4
+       c2. c2.  c2. c2.
+       \bar "|."
+    }
+
+    >           
+
+    \paper{
+    \translator{ \ScoreContext
+    \remove "Timing_engraver" }
+    \translator{ \StaffContext
+    \consists "Timing_engraver"
+    \alias Timing
+}
+}
+}
index 1ca7f50251067835f38dff1108f07d93028986ee..a1aa622d3005a4c8c5cab71b4df8fb4da561fcd0 100644 (file)
@@ -1,17 +1,44 @@
 \version "1.5.68"
 \header {
-    texidoc ="mensural style rests."
-    }
+    texidoc = "rests in various styles."
+}
+
+% FIXME: Currently, this file produces "warning: flag `d-3' not found"
+% errors (and similar for "d7") from Stem::flag().  This is should not
+% happen, since there are no notes/stems in this example.
 
 \score { 
-  \context Voice \notes\relative c {
-    r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
-       \property Staff.Rest \override #'style = #'mensural
-       \emptyText
-       r\longa^"restStyle = \"mensural\"" r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
-       
-       
-  }
-  \paper { }  
-  \midi { }
+    \context Staff \notes\relative c {
+       \property Staff.Rest \set #'style = #'mensural
+       r\maxima^"Rest style = \#'mensural"
+       r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
+       \break
+
+       \property Staff.Rest \set #'style = #'neo_mensural
+       r\maxima^"Rest style = \#'neo\\_mensural"
+       r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
+       \break
+
+       \property Staff.Rest \set #'style = #'classical
+       r\maxima^"Rest style = \#'classical"
+       r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
+       \break
+
+       \property Staff.Rest \set #'style = #'default
+       r\maxima^"Rest style = \#'default"
+       r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
+       \break
+    }
+    \paper {
+       \translator {
+           \StaffContext
+           %%%% FIXME: The following looks good, but produces
+           %%%% lots of warnings:
+           % \remove Bar_engraver
+       }
+       \translator {
+           \ScoreContext
+           \remove Bar_number_engraver
+       }
+    }
 }
index fc318070900caae8883c30372a3b6d6fc5ea91d3..bf552b641175054f5292806840c68f07489734f7 100644 (file)
@@ -6,7 +6,7 @@ extension can be controlled through @code{Voice.Stem}'s grob-property
 "}
 
 \paper { linewidth = -1.}
-\score {\notes \relative c {
+\score {\notes \relative c \context Voice {
   \grace a'8 a4
   \property Voice.Stem \set #'no-stem-extend = ##t
   \grace g8 g4 [g8 g]
diff --git a/input/test/tab-staff.ly b/input/test/tab-staff.ly
deleted file mode 100644 (file)
index e51beac..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-\version "1.5.68"
-
-
-
-%{
-
-Kludge for half-assed tab notation (you need to fill the numbers
-yourself.)
-
-%}
-
-bla =  \notes \relative c' { <c4 e g>  <c4. e g> <c8 f a> <c4 f a> <c1 e g> } 
-
-\score { \notes
-<
-  \context Voice = BLA \bla
-  \context TabStaff \context Thread \bla
->
-
-\paper {
- \translator {
-  \StaffContext
-  \name TabStaff
-  StaffSymbol \override #'line-count = #6
-  \remove "Clef_engraver"
-  \remove "Time_signature_engraver"
-  \consists "Pitch_squash_engraver"
-   NoteHead \override #'transparent = ##t
-   Stem \override #'transparent = ##t
-   NoteHead \override #'staff-position = #-6
-   Dots \override #'transparent = ##t
-   squashedPosition = #-4
-   Stem \override #'length = #12
-}
-\translator {
-\ScoreContext
-\accepts TabStaff
-}
-}
-}
index 0abc88d5ee514ae692154b2fb6546e0d3c929589..93c4b5614c40599d67b10a09eede3efe5588da53 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.5.68"
+\version "1.6.2"
 
 %{
 
@@ -11,20 +11,22 @@ from string-number + pitch to number.
 %}
 
 partition = \notes {
-    a,4-2 c'-5 a-4 e'-6
-    e-3 c'-5 a-4 e'-6
-  }
+    \key e \major
+    e8\5 fis\5 gis\5 a\5 b\5 cis'\5 dis'\5 e'\5
+    e8\4 fis\4 gis\4 a\4 b\4 cis'\4 dis'\4 e'\4
+    e8 fis gis a b cis' dis' e'
+    \property Score.minimumFret = #5
+    e8 fis gis a b cis' dis' e'
+}
 
 \score {
   \context StaffGroup <
     \context Staff <
-      % Hide fingering number (used for string number) for the "normal" staff
-      \property Staff.Fingering \override #'transparent = ##t
-      
-      \partition
+       \clef "G_8"
+       \partition
     >
     \context TabStaff <
-      \partition
+       \partition
     >
   >
 }
index 8f49d5babd9737f72b2ebd9b11b92d0f5ae9d44f..5d9d2047ed646b27839ca4c1cefc793015491f1d 100644 (file)
@@ -198,7 +198,6 @@ fugaIIPedal =  \notes \relative c {
   %13
     \property Staff.PhrasingSlur \override #'dashed = #5.0
     c4 \( ( d ) e\) f
-
 %    r4 fis,4-\ltoe e4.-\lheel e'8-\rheel | 
 
 % tie accs: 2nd should get no acc
@@ -219,20 +218,7 @@ fis8-\rtoe fis4-\rtoe [e8-\ltoe a-\rtoe] |
       
     >
   >
-
-  \paper {
-
-       \translator {
-               \OrchestralScoreContext
-       }
-       \translator { \PianoStaffContext
-               \consists "Instrument_name_engraver"
-       }
-       \translator { \StaffContext
-               \consists "Instrument_name_engraver"
-       }
-  }
-
+\paper {}
   \midi {
     \tempo 4 =96 }
 }
index 56e0c1a411ec846fe7c3dcb12020b89f66a41bcf..239839a5f01b9d0afeb473c60a471d447bacec8b 100644 (file)
@@ -19,7 +19,7 @@
            \stemUp
            \clef treble g ~ < g8 )e> } \\
         { s16
-          \property Voice.Stem \set #'transparent = ##t
+         \property Voice.Stem \set #'transparent = ##t
           d'
           \property Voice.Stem \revert #'transparent
           ~ < d4 b4  > }
index 35ed40e707646291629832fa59d49b8d2df76f07..79a516e0b247b2588e34ec22d15bfe05b5ba7daf 100644 (file)
@@ -6,12 +6,19 @@ SUBDIRS = include
 
 MODULE_LIBS=$(depth)/flower 
 MODULE_INCLUDES= $(depth)/flower/include
-MODULE_CXXFLAGS=
+MODULE_CXXFLAGS= 
+
+
 HELP2MAN_EXECS = lilypond
 STEPMAKE_TEMPLATES= c++ executable po help2man
 
 include $(depth)/make/stepmake.make 
 
+# for profiling, link guile statically:
+#
+# USER_LDFLAGS += -static -lltdl -ldl
+#
+
 ETAGS_FLAGS += -r '/^LY_DEFINE *(\([^,]+\),/\1/'  -r '/^LY_DEFINE *([^,]+, *"\([^"]+\)"/\1/' 
 
 default: 
index 4200f3b88aca3c76a64a14205a32f133cf22c76d..426f94fbb6ee8a05fd8be4af18454cda6879bf41 100644 (file)
@@ -95,6 +95,57 @@ Accidental_interface::accurate_boxes (Grob *a,Grob**common)
   return boxes;
 }
 
+/*
+ * Some styles do not provide all flavours of accidentals, e.g. there
+ * is currently no sharp accidental in vaticana style.  In these cases
+ * this function falls back to one of the other styles.
+ */
+String
+Accidental_interface::get_fontcharname(String style, int alteration)
+{
+  if (style == "hufnagel")
+    switch (alteration)
+      {
+      case -2: return "-2";
+      case -1: return "hufnagel-1";
+      case 0: return "vaticana0";
+      case 1: return "mensural1";
+      case 2: return "2";
+      }
+  if (style == "medicaea")
+    switch (alteration)
+      {
+      case -2: return "-2";
+      case -1: return "medicaea-1";
+      case 0: return "vaticana0";
+      case 1: return "mensural1";
+      case 2: return "2";
+      }
+  if (style == "vaticana")
+    switch (alteration)
+      {
+      case -2: return "-2";
+      case -1: return "vaticana-1";
+      case 0: return "vaticana0";
+      case 1: return "mensural1";
+      case 2: return "2";
+      }
+  if (style == "mensural")
+    switch (alteration)
+      {
+      case -2: return "-2";
+      case -1: return "mensural-1";
+      case 0: return "vaticana0";
+      case 1: return "mensural1";
+      case 2: return "2";
+      }
+  if (style == "neo_mensural")
+    style = ""; // currently same as default
+  if (style == "default")
+    style = "";
+  return style + to_string (alteration);
+}
+
 MAKE_SCHEME_CALLBACK (Accidental_interface,brew_molecule,1);
 SCM
 Accidental_interface::brew_molecule (SCM smob)
@@ -102,7 +153,7 @@ Accidental_interface::brew_molecule (SCM smob)
   Grob *me = unsmob_grob (smob);
   bool smaller = false;
   bool parens = false;
-  
+
   bool caut  = to_boolean (me->get_grob_property ("cautionary"));
   if (caut)
     {
@@ -110,7 +161,7 @@ Accidental_interface::brew_molecule (SCM smob)
       parens = gh_equal_p (cstyle, ly_symbol2scm ("parentheses"));
       smaller = gh_equal_p (cstyle, ly_symbol2scm ("smaller"));
     }
-  
+
   SCM scm_style = me->get_grob_property ("style");
   String style;
   if (gh_symbol_p (scm_style))
@@ -121,11 +172,10 @@ Accidental_interface::brew_molecule (SCM smob)
     {
       /*
        preferably no name for the default style.
-       */
+      */
       style = "";
     }
 
-
   Font_metric *fm = 0;
   if (smaller)
     {
@@ -141,16 +191,20 @@ Accidental_interface::brew_molecule (SCM smob)
 
   Molecule mol;
   for (SCM s = me->get_grob_property ("accidentals");
-       gh_pair_p (s);  s= gh_cdr (s))
+       gh_pair_p (s); = gh_cdr (s))
     {
-      SCM entry  = gh_car (s);
-      
-      
-      Molecule acc (fm->find_by_name (String ("accidentals-") +
-                                     style +
-                                     to_string (gh_scm2int(entry))));
-      
-      mol.add_at_edge (X_AXIS,  RIGHT, acc, 0.1);
+      int alteration = gh_scm2int (gh_car (s));
+      String font_char = get_fontcharname (style, alteration);
+      Molecule acc (fm->find_by_name ("accidentals-" + font_char));
+
+      if (acc.empty_b())
+       {
+         me->warning (_f ("accidental `%s' not found", font_char));
+       }
+      else
+       {
+         mol.add_at_edge (X_AXIS,  RIGHT, acc, 0.1);
+       }
     }
 
   if (parens)
index fad161affbdd51bc9ab33cf6882adcd04bd4cb56..a00877a75b1b2fe01a1b74bf00462aae52647ed6 100644 (file)
@@ -153,6 +153,7 @@ All_font_metrics::find_tfm (String name)
 }
 
 
+
 Font_metric *
 All_font_metrics::find_font (String name)
 {
index e5ae076708a81ec8a3a6ea60b67d743db3469481..74d345ee1470cbab47e9da292a9ce1d3eb855dfb 100644 (file)
@@ -101,7 +101,8 @@ Auto_change_iterator::pending_pitch (Moment m) const
       m = iter->pending_moment ();
     }
 
-  delete iter;
+  scm_gc_unprotect_object (iter->self_scm());
+
   return ps;
 }
 
index 6405496abc97eb553a9e78735de85ad552897f67..af227ca0d99dd93e18a723afcf4954a0548c8512 100644 (file)
@@ -22,15 +22,15 @@ public:
   VIRTUAL_COPY_CONS(Bar_check_iterator);
   virtual void process (Moment);
   Bar_check_iterator( );
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
 };
 
-IMPLEMENT_CTOR_CALLBACK (Bar_check_iterator);
+IMPLEMENT_CTOR_CALLBACK(Bar_check_iterator);
 
 Music * get_barcheck ()
 {
   Music *bc = new Music;
-  bc->set_mus_property ("iterator-ctor", Bar_check_iterator::constructor_cxx_function);
+  bc->set_mus_property ("iterator-ctor", Bar_check_iterator::constructor_proc);
   return bc;
 }
 
index d897133e216aec6fc9169ba2dd469492fe1420ea..03d8f618998f261451bd21c2dd2d4d1dabc16a28 100644 (file)
@@ -148,7 +148,6 @@ Bar_line::before_line_breaking (SCM smob)
       SCM proc = me->get_grob_property ("break-glyph-function");
       g = gh_call2 (proc, g, scm_int2num (bsd));
     }
-
   
   if (!gh_string_p (g))
     {
index 47bceef5bb1f57cfccc6da4a87b00a685bce8e40..10eb2f45513e9ccc316c0c4948488264d01b4aea 100644 (file)
@@ -38,10 +38,6 @@ protected:
 };
 
 
-/*
-  TODO: more advanced formatting via SCM function, perhaps barnumbers
-  every 5 measures?  */
-
 void
 Bar_number_engraver::process_music ()
 {
@@ -51,19 +47,20 @@ Bar_number_engraver::process_music ()
   
   if (gh_string_p (wb))
     {
-      SCM bn = get_property ("currentBarNumber");
       SCM smp = get_property ("measurePosition");
-      int ibn = gh_number_p (bn) ? gh_scm2int(bn) : 1;
       
       Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-      if (mp.main_part_ == Rational (0)
-         && ibn != 1)
+      if (mp.main_part_ == Rational (0))
        {
-         create_items ();
-         
-         // guh.
-         text_->set_grob_property ("text",
-                                     scm_makfrom0str (to_string (gh_scm2int (bn)).to_str0 ()));
+         SCM bn = get_property ("currentBarNumber");
+         SCM proc = get_property ("barNumberVisibility");
+         if (gh_number_p (bn) && to_boolean(gh_call1(proc, bn)))
+           {
+             create_items ();
+             // guh.
+             text_->set_grob_property
+               ("text", scm_makfrom0str (to_string (gh_scm2int (bn)).to_str0 ()));
+           }
        }
     }
 
index 8e454d3e911bf7304f784e5408ef92437a03cc57..3b76c373b96178950c25993a77d275764ecdc75f 100644 (file)
@@ -67,6 +67,16 @@ Beam::add_stem (Grob *me, Grob *s)
 }
 
 
+Real
+Beam::get_thickness (Grob * me)
+{
+  SCM th = me->get_grob_property ("thickness");
+  if (gh_number_p (th))
+    return gh_scm2double (th)* Staff_symbol_referencer::staff_space (me);
+  else
+    return 0.0;
+}
+
 /* Return the translation between 2 adjoining beams. */
 Real
 Beam::get_beam_translation (Grob *me)
@@ -97,8 +107,7 @@ Beam::space_function (SCM smob, SCM beam_count)
   
   Real staff_space = Staff_symbol_referencer::staff_space (me);
   Real line = me->get_paper ()->get_var ("linethickness");
-  Real thickness = gh_scm2double (me->get_grob_property ("thickness"))
-    * staff_space;
+  Real thickness = get_thickness (me);
   
   Real beam_translation = gh_scm2int (beam_count) < 4
     ? (2*staff_space + line - thickness) / 2.0
@@ -316,8 +325,7 @@ Beam::brew_molecule (SCM grob)
   Real dy = pos.delta ();
   Real dydx = dy && dx ? dy/dx : 0;
   
-  Real thick = gh_scm2double (me->get_grob_property ("thickness"))
-    * Staff_symbol_referencer::staff_space (me);
+  Real thick = get_thickness (me);
   Real bdy = get_beam_translation (me);
 
   SCM last_beaming = SCM_EOL;;
@@ -1215,8 +1223,7 @@ Beam::set_stem_lengths (Grob *me)
       &&gh_scm2double (me->get_grob_property ("gap")))
   {
     gap = true;
-    thick = gh_scm2double (me->get_grob_property ("thickness"))
-      * Staff_symbol_referencer::staff_space(me);
+    thick = get_thickness(me);
   }
       
   // ugh -> use commonx
index e165817f24d27ce025faef5fb1f77aa429bd6cdc..ffe48f240d241ab2fa483774141121d2ef950476 100644 (file)
@@ -112,10 +112,9 @@ Bezier::polynomial (Axis a)const
   Polynomial p (0.0);
   for (int j=0; j <= 3; j++)
     {
-      p += control_[j][a]
+      p += (control_[j][a] *   binomial_coefficient (3, j))
        * Polynomial::power (j , Polynomial (0,1))*
-       Polynomial::power (3 - j, Polynomial (1,-1))*
-       binomial_coefficient (3, j);
+       Polynomial::power (3 - j, Polynomial (1,-1));
     }
 
   return p;
index c29c74b2407c6b12dfba9ecb06ddc03699f45d8e..9bf4e4503a22ce4e6eb0f0fd818bf2ee5a27020b 100644 (file)
@@ -71,7 +71,7 @@ void
 Break_align_interface::do_alignment (Grob *me)
 {
   Item * item = dynamic_cast<Item*> (me);
-
+  int rank = Paper_column::get_rank (item->get_column ());
   Link_array<Grob> elems
     = Pointer_group_interface__extract_grobs (me, (Grob*)0,
                                                 "elements");
@@ -95,14 +95,13 @@ Break_align_interface::do_alignment (Grob *me)
 
 
   int edge_idx = -1;
-  while (idx < elems.size())
+  while (idx < elems.size() - 1)
     {
       int next_idx = idx+1;
-      while ( next_idx < elems.size() && extents[next_idx].empty_b())
+      while (next_idx < elems.size() &&
+            extents[next_idx].empty_b()
+            && next_idx != elems.size() -1 )
        next_idx++;
-
-      if (next_idx == elems.size())
-       break;
       
       Grob *l = elems[idx];
       Grob *r = elems[next_idx];
@@ -133,18 +132,18 @@ Break_align_interface::do_alignment (Grob *me)
        table, but that gets icky when that grob is suicided for some
        reason.
       */
-      for (SCM s = r->get_grob_property ("elements");
-          gh_pair_p (s); s = gh_cdr (s))
-       {
-         Grob * elt =unsmob_grob(gh_car (s));
-
-         SCM sym = elt->get_grob_property ("break-align-symbol");
-         if (gh_symbol_p (sym))
-           {
-             rsym = sym;
-             break;
-           }
-       }
+       for (SCM s = r->get_grob_property ("elements");
+            gh_pair_p (s); s = gh_cdr (s))
+         {
+           Grob * elt =unsmob_grob(gh_car (s));
+
+           SCM sym = elt->get_grob_property ("break-align-symbol");
+           if (gh_symbol_p (sym))
+             {
+               rsym = sym;
+               break;
+             }
+         }
       if (rsym  == ly_symbol2scm("left-edge"))
        edge_idx = next_idx;
 
@@ -183,7 +182,7 @@ Break_align_interface::do_alignment (Grob *me)
        offsets[next_idx] = extents[idx][RIGHT] + distance;
       else if (type == ly_symbol2scm("minimum-space"))
        offsets[next_idx] = extents[idx][RIGHT] >? distance;
-
+      
       idx = next_idx;
     }
 
index 4f0a920dca27695566d73cf60f73906db82e420d..e580e177169b1165af31dc9b3673abe9fd65063f 100644 (file)
@@ -79,7 +79,7 @@ Chord_tremolo_engraver::try_music (Music * m)
 {
   Repeated_music * rp = dynamic_cast<Repeated_music*> (m);
   if (rp
-      && rp->get_mus_property ("iterator-ctor") == Chord_tremolo_iterator::constructor_cxx_function
+      && rp->get_mus_property ("iterator-ctor") == Chord_tremolo_iterator::constructor_proc
       && !repeat_) 
     {
       Moment l = rp->length_mom ();
index 7cec33c3026daaa5d33fbb5b0fd942e1a9291988..b4d769696810ee5258887f2396e5df0bab655855 100644 (file)
@@ -22,7 +22,7 @@ Chord_tremolo_iterator::construct_children ()
 {
   Repeated_music * rep = dynamic_cast<Repeated_music*> (get_music ());
   factor_  = Moment (Rational(1, 1));
-  child_iter_ = get_iterator (rep->body ());
+  child_iter_ = unsmob_iterator (get_iterator (rep->body ()));
 }
 
 Chord_tremolo_iterator::Chord_tremolo_iterator ()
@@ -35,7 +35,23 @@ Chord_tremolo_iterator::Chord_tremolo_iterator (Chord_tremolo_iterator const &sr
   : Music_iterator (src)
 {
   factor_ = src.factor_;
-  child_iter_ = src.child_iter_ ? src.child_iter_->clone () : 0; 
+  child_iter_ = src.child_iter_ ? src.child_iter_->clone () : 0;
+  if (child_iter_)
+    scm_gc_unprotect_object (child_iter_->self_scm());
+}
+
+void
+Chord_tremolo_iterator::do_quit()
+{
+  if (child_iter_)
+    child_iter_->quit();
+}
+
+void
+Chord_tremolo_iterator::derived_mark () const
+{
+  if (child_iter_)
+    scm_gc_mark (child_iter_->self_scm());
 }
 
 void
@@ -65,11 +81,6 @@ Chord_tremolo_iterator::ok () const
   return child_iter_ && child_iter_->ok ();
 }
 
-Chord_tremolo_iterator::~Chord_tremolo_iterator ()
-{
-  delete child_iter_;
-}
-
 Music_iterator*
 Chord_tremolo_iterator::try_music_in_children (Music  *m) const
 {
index e7b4dfa94ed9bbf51a0cc9efe3de4ef8c19e2577..091ee979a0bb8a0fd93b235b18530ce8c7a26f9c 100644 (file)
@@ -95,28 +95,27 @@ Clef_engraver::create_clef ()
       announce_grob(c, SCM_EOL);
 
       clef_ = c;
-    }
-  SCM cpos = get_property ("clefPosition");
+      SCM cpos = get_property ("clefPosition");
 
-  if (gh_number_p (cpos))
-    Staff_symbol_referencer::set_position (clef_, gh_scm2int (cpos));
+      if (gh_number_p (cpos))
+       Staff_symbol_referencer::set_position (clef_, gh_scm2int (cpos));
 
-  SCM oct =  get_property ("clefOctavation");
-  if (gh_number_p (oct) && gh_scm2int (oct))
-    {
-      Item * g = new Item (get_property ("OctavateEight"));
+      SCM oct =  get_property ("clefOctavation");
+      if (gh_number_p (oct) && gh_scm2int (oct))
+       {
+         Item * g = new Item (get_property ("OctavateEight"));
 
-      Side_position_interface::add_support (g,clef_);      
+         Side_position_interface::add_support (g,clef_);      
 
-      g->set_parent (clef_, Y_AXIS);
-      g->set_parent (clef_, X_AXIS);
+         g->set_parent (clef_, Y_AXIS);
+         g->set_parent (clef_, X_AXIS);
 
-      g->set_grob_property ("direction", scm_int2num (sign (gh_scm2int (oct))));
-      octavate_ = g;
-      announce_grob(octavate_, SCM_EOL);
+         g->set_grob_property ("direction", scm_int2num (sign (gh_scm2int (oct))));
+         octavate_ = g;
+         announce_grob(octavate_, SCM_EOL);
+       }
     }
 }
-
 void
 Clef_engraver::process_music ()
 {
index 9a2eec2e3a68d043f88f7a34a835b7fb07091e93..062d7b81efbd189f5666d90bc2773225aa499a4f 100644 (file)
@@ -19,7 +19,7 @@ MAKE_SCHEME_CALLBACK (Clef,before_line_breaking,1);
 SCM
 Clef::before_line_breaking (SCM smob)
 {
-  Item * s = unsmob_item (smob);
+  Item *s = unsmob_item (smob);
 
   SCM glyph = s->get_grob_property ("glyph-name");
   
@@ -51,16 +51,19 @@ MAKE_SCHEME_CALLBACK (Clef,brew_molecule,1)
 SCM
 Clef::brew_molecule (SCM smob) 
 {
-  Grob * sc = unsmob_grob (smob);
-  SCM glyph = sc->get_grob_property ("glyph-name");
-  if (gh_string_p (glyph))
-    {
-      return Font_interface::get_default_font (sc)->find_by_name (String (ly_scm2string (glyph))).smobbed_copy ();
-    }
-  else
+  Grob *me = unsmob_grob (smob);
+  SCM glyph_scm = me->get_grob_property ("glyph-name");
+  if (!gh_string_p (glyph_scm))
+    return SCM_EOL;
+
+  String glyph = String (ly_scm2string (glyph_scm));
+  Font_metric *fm = Font_interface::get_default_font (me);
+  Molecule out = fm->find_by_name (glyph);
+  if (out.empty_b())
     {
-      return SCM_EOL;
+      me->warning (_f ("clef `%s' not found", glyph.to_str0 ()));
     }
+  return out.smobbed_copy ();
 }
 
 
index 14d4d405c239e36aacfbf7d5350e9ee1260fc9b2..ca90b3d5db56156c7c90032625bef99329a8d05a 100644 (file)
@@ -43,7 +43,8 @@ class Completion_heads_engraver : public Engraver
   Moment note_end_mom_;
   bool first_b_;
   Rational left_to_do_;
-
+  Rational do_nothing_until_;
+  
   Moment next_barline_moment ();
   Duration find_nearest_duration (Rational length);
   
@@ -81,6 +82,8 @@ Completion_heads_engraver::try_music (Music *m)
          musiclen.main_part_ = Rational (0,1);
        }
       note_end_mom_  = note_end_mom_ >? (now + musiclen);
+      do_nothing_until_ = Rational (0,0);
+      
       return true;
     }
   else if (dynamic_cast<Busy_playing_req*> (m))
@@ -92,6 +95,9 @@ Completion_heads_engraver::try_music (Music *m)
   
 }
 
+/*
+  The duration _until_ the next barline.
+ */
 Moment
 Completion_heads_engraver::next_barline_moment ( )
 {
@@ -146,8 +152,12 @@ Completion_heads_engraver::process_music ()
 {
   if (!first_b_ && !left_to_do_)
     return ;
-
+  
   first_b_ = false;
+
+  Moment now =  now_mom ();
+  if (do_nothing_until_ > now.main_part_)
+    return ;
   
   Duration note_dur;
   Duration *orig = 0;
@@ -160,15 +170,15 @@ Completion_heads_engraver::process_music ()
       orig = unsmob_duration (note_reqs_[0]->get_mus_property ("duration"));
       note_dur = *orig;
     }
-
   Moment nb = next_barline_moment ();
   if (nb < note_dur.length_mom ())
     {
       note_dur = find_nearest_duration (nb.main_part_);
 
-      Moment next = now_mom();
+      Moment next = now;
       next.main_part_ += note_dur.length_mom ();
       top_engraver ()->add_moment_to_process (next);
+      do_nothing_until_ = next.main_part_;
     }
 
   if (orig)
index a96e509d7f7e1f3100ca1c3d32837a8c14703ead..4def4d6f2277ce95cc86ea6d2ed7808f3bd4a88b 100644 (file)
@@ -8,10 +8,6 @@
 
 /* TODO:
 
- - merge create_ledger_line () and Note_head::create_ledger_line ()
-
- - rewrite create_ledger_line () to support short and thin ledger lines
-
  - do not show if a clef change immediately follows in the next line
 
  - decide: do or do not print custos if the next line starts with a rest
@@ -35,83 +31,83 @@ SCM
 Custos::brew_molecule (SCM smob)
 {
   Item *me = (Item *)unsmob_grob (smob);
-  SCM scm_style = me->get_grob_property ("style");
 
+  SCM scm_style = me->get_grob_property ("style");
+  String style;
   if (gh_symbol_p (scm_style))
     {
-      String style = ly_scm2string (scm_symbol_to_string (scm_style));
-
-      /*
-       * Shall we use a common custos font character regardless if on
-       * staffline or not, or shall we use individual font characters
-       * for both cases?
-       */
-      bool adjust =
-       to_boolean (me->get_grob_property ("adjust-if-on-staffline"));
-
-      String idx = "custodes-" + style + "-";
-
-      int neutral_pos;
-      SCM ntr_pos = me->get_grob_property ("neutral-position");
-      if (gh_number_p (ntr_pos))
-       neutral_pos = gh_scm2int (ntr_pos);
-      else
-       neutral_pos = 0;
+      style = ly_scm2string (scm_symbol_to_string (scm_style));
+    }
+  else
+    {
+      style = "mensural";
+    }
 
-      Direction neutral_direction =
-       to_dir (me->get_grob_property ("neutral-direction"));
+  /*
+   * Shall we use a common custos font character regardless if on
+   * staffline or not, or shall we use individual font characters
+   * for both cases?
+   */
+  bool adjust =
+    to_boolean (me->get_grob_property ("adjust-if-on-staffline"));
+
+  int neutral_pos;
+  SCM ntr_pos = me->get_grob_property ("neutral-position");
+  if (gh_number_p (ntr_pos))
+    neutral_pos = gh_scm2int (ntr_pos);
+  else
+    neutral_pos = 0;
+
+  Direction neutral_direction =
+    to_dir (me->get_grob_property ("neutral-direction"));
+
+  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
+  int sz = Staff_symbol_referencer::line_count (me)-1;
+
+  String font_char = "custodes-" + style + "-";
+  if (pos < neutral_pos)
+    font_char += "u";
+  else if (pos > neutral_pos)
+    font_char += "d";
+  else if (neutral_direction == UP)
+    font_char += "u";
+  else if (neutral_direction == DOWN)
+    font_char += "d";
+  else // auto direction; not yet supported -> use "d"
+    font_char += "d";
+
+  if (adjust)
+    {
+      font_char += (((pos ^ sz) & 0x1) == 0) ? "1" : "0";
+    }
+  else
+    {
+      font_char += "2";
+    }
 
+  Molecule molecule
+    = Font_interface::get_default_font (me)->find_by_name (font_char);
+  if (molecule.empty_b ())
+    {
+      me->warning (_f ("custos `%s' not found", font_char));
+      return SCM_EOL;
+    }
+  else
+    {
+      // add ledger lines
       int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-      int sz = Staff_symbol_referencer::line_count (me)-1;
-
-      if (pos < neutral_pos)
-       idx += "u";
-      else if (pos > neutral_pos)
-       idx += "d";
-      else if (neutral_direction == UP)
-       idx += "u";
-      else if (neutral_direction == DOWN)
-       idx += "d";
-      else // auto direction; not yet supported -> use "d"
-       idx += "d";
-
-      if (adjust)
-        {
-         idx += (((pos ^ sz) & 0x1) == 0) ? "1" : "0";
-       }
-      else
-        {
-         idx += "2";
-       }
-
-      Molecule molecule
-       = Font_interface::get_default_font (me)->find_by_name (idx);
-      if (molecule.empty_b ())
-        {
-         String message = "no such custos: `" + idx + "'";
-         warning (_ (message.to_str0 ()));
-         return SCM_EOL;
-       }
-      else
-        {
-         // add ledger lines
-         int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-         int interspaces = Staff_symbol_referencer::line_count (me)-1;
-         if (abs (pos) - interspaces > 1)
-           {
-             Molecule ledger_lines =
-               Note_head::brew_ledger_lines (me, pos, interspaces,
-                                             molecule.extent (X_AXIS), true);
-             molecule.add_molecule (ledger_lines);
-           }
-         return molecule.smobbed_copy ();
+      int interspaces = Staff_symbol_referencer::line_count (me)-1;
+      if (abs (pos) - interspaces > 1)
+       {
+         Molecule ledger_lines =
+           Note_head::brew_ledger_lines (me, pos, interspaces,
+                                         molecule.extent (X_AXIS), true);
+         molecule.add_molecule (ledger_lines);
        }
+      return molecule.smobbed_copy ();
     }
-  else
-    return SCM_EOL;
 }
 
-
 ADD_INTERFACE (Custos, "custos-interface",
   "A custos is a staff context symbol that appears at the end of a
   staff line with monophonic musical contents (i.e. with a single
diff --git a/lily/cxx-function-smob.cc b/lily/cxx-function-smob.cc
deleted file mode 100644 (file)
index 4bdd4df..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*   
-  grob-callback.cc --  implement Callback smob.
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "cxx-function-smob.hh"
-#include "ly-smobs.icc"
-
-static scm_t_bits callback_tag;
-
-static
-SCM mark_smob (SCM)
-{
-  return SCM_EOL;
-}
-
-static int
-print_smob (SCM, SCM port, scm_print_state *)
-{
-  scm_puts ("#<encapsulated C++ function>", port);
-  return 1;
-}
-
-static size_t
-free_smob (SCM)
-{
-  return 0;
-}
-
-LY_DEFINE(cxx_function_type, "c++-function?", 1, 0, 0, (SCM x),
-         "Is this an encapsulated C++ function ?")
-{
-  return (SCM_CELL_TYPE (x)) == callback_tag ? SCM_BOOL_T : SCM_BOOL_F; 
-}
-
-void init_cxx_function_smobs ()
-{
-  callback_tag = scm_make_smob_type ("callback", 0);
-  scm_set_smob_mark (callback_tag, mark_smob);
-  scm_set_smob_free (callback_tag, free_smob);
-  scm_set_smob_print (callback_tag, print_smob);
-  scm_set_smob_equalp (callback_tag, 0);
-}
-
-SCM
-smobify_cxx_function (Cxx_function cb)
-{
-  SCM z;
-  SCM_NEWSMOB(z,callback_tag, cb) ;
-  return z;
-}
-
-
-Cxx_function
-unsmob_cxx_function (SCM x)
-{
-  
-  if (SCM_NIMP (x) && SCM_CELL_TYPE (x) == callback_tag)
-    return (Cxx_function) SCM_CELL_WORD_1 (x);
-  else
-    return 0;
-}
-
index 02bf0e107472a48f7a169637f9a0286333f41be8..b8cb0f493949df5cbe3c96158c75ca7a0989e79b 100644 (file)
@@ -68,17 +68,7 @@ Engraver::Engraver()
 Score_engraver* 
 Engraver::top_engraver () const
 {
-  /*
-    ugh.
-   */
-  if (dynamic_cast<Score_engraver*>((Engraver*)this))
-    return dynamic_cast<Score_engraver*> ((Engraver*)this);
-
-  if (daddy_trans_)
-    return dynamic_cast<Engraver*> (daddy_trans_)->top_engraver ();
-
-  programming_error ("No score engraver!");
-  return 0;
+  return dynamic_cast<Score_engraver*> (top_translator());
 }
 
 ENTER_DESCRIPTION(Engraver,
index 120b580e28f961b95d8f6683a6b7d4ab01f79b1b..ee6612cc4e14724a3b2ea121eeb78f607d3a446e 100644 (file)
@@ -192,8 +192,8 @@ Fingering_engraver::make_script (Direction d, Music *r,Axis a,  int i)
   if (gh_number_p (s))
     priority = gh_scm2int (s);
   
-  /* Make sure they're in order of user input by adding index i. */
-  priority += d*i;
+  /* See script-engraver.cc */
+  priority += i;
 
   fingering->set_grob_property ("script-priority", gh_int2scm (priority));
 
index 016db26f4059b170b7b671038b8c99f7cab512d6..b2e07aed32d6ba45a581dd93b30ac962bbd8c0f3 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  repeated-music-iterator.cc --  implement Folded_repeat_iterator
+     folded-repeat-iterator.cc --  implement Folded_repeat_iterator
   
   source file of the GNU LilyPond music typesetter
   
@@ -30,11 +30,11 @@ Folded_repeat_iterator::ok () const
 {
   return main_iter_ || alternative_iter_;
 }
-
-Folded_repeat_iterator::~Folded_repeat_iterator ()
+void
+Folded_repeat_iterator::do_quit()
 {
-  delete main_iter_;
-  delete alternative_iter_;
+  if (main_iter_)main_iter_->quit();
+  if (alternative_iter_)alternative_iter_->quit();
 }
 
 Folded_repeat_iterator::Folded_repeat_iterator (Folded_repeat_iterator const &src)
@@ -43,6 +43,10 @@ Folded_repeat_iterator::Folded_repeat_iterator (Folded_repeat_iterator const &sr
   main_iter_ = src.main_iter_ ? src.main_iter_->clone () : 0;
   alternative_iter_ = src.alternative_iter_ ? src.alternative_iter_->clone () : 0;
   main_length_mom_ = src.main_length_mom_;
+  if (main_iter_)
+    scm_gc_unprotect_object (main_iter_->self_scm());
+  if (alternative_iter_)
+    scm_gc_unprotect_object (alternative_iter_->self_scm());
 }
 
 Moment
@@ -60,10 +64,10 @@ void
 Folded_repeat_iterator::construct_children ()
 {
   Repeated_music  *  mus = dynamic_cast<Repeated_music*> (get_music ());
-  main_iter_ = get_iterator (mus->body ());
+  main_iter_ = unsmob_iterator (get_iterator (mus->body ()));
   if (!main_iter_->ok ())
     {
-     leave_body ();
+      leave_body ();
       enter_alternative ();
     }
 }
@@ -95,7 +99,7 @@ Folded_repeat_iterator::process (Moment m)
       alternative_iter_->process (m - main_length_mom_);
       if (!alternative_iter_->ok ())
        {
-         delete alternative_iter_;
+         alternative_iter_->quit();
          alternative_iter_ =0;
        }
     }
@@ -105,7 +109,8 @@ void
 Folded_repeat_iterator::leave_body ()
 {
   Repeated_music *  mus = dynamic_cast<Repeated_music *> (get_music ());
-  delete main_iter_;
+
+  main_iter_->quit ();
   main_iter_ = 0;
   main_length_mom_ +=  mus->body ()->length_mom ();
 }
@@ -116,12 +121,17 @@ Folded_repeat_iterator::enter_alternative ()
   Repeated_music *  mus = dynamic_cast<Repeated_music *> (get_music ());  
   if (mus->alternatives ())
     {
+  /*
+    ugh.
+   */ 
       Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
       s->separate_contexts_b_ = true;
       s->init_translator (mus, report_to ());
       
       alternative_iter_ = s;
       alternative_iter_->construct_children ();
+
+      scm_gc_unprotect_object (s->self_scm());
     }
 }
 
@@ -137,5 +147,12 @@ Folded_repeat_iterator::try_music_in_children (Music * m) const
     return alternative_iter_->try_music (m);
   return 0;
 }
-
+void
+Folded_repeat_iterator::derived_mark()const
+{
+  if (main_iter_)
+    scm_gc_mark (main_iter_->self_scm());
+  if (alternative_iter_)
+    scm_gc_mark (alternative_iter_->self_scm());
+}
 IMPLEMENT_CTOR_CALLBACK (Folded_repeat_iterator);
index 8fd2a49931717a94369b6392c86314e45ca7d9be..a25bde424f72a4ef9ca570f4211fc207d454540b 100644 (file)
@@ -82,7 +82,7 @@ Font_metric::~Font_metric ()
 Font_metric::Font_metric ()
 {
   description_ = SCM_EOL;
-
+  self_scm_ = SCM_EOL;
   smobify_self ();
 }
 
@@ -103,10 +103,20 @@ Font_metric::get_char (int)const
 }
 
 
+void
+Font_metric::derived_mark ()const
+{
+  
+}
+
+  
+
 SCM
 Font_metric::mark_smob (SCM s)
 {
   Font_metric * m = (Font_metric*) SCM_CELL_WORD_1 (s);
+
+  m->derived_mark();
   return m->description_;
 }
 
@@ -164,3 +174,16 @@ number-pairs.")
 }
 
 
+
+
+  
+Molecule
+Font_metric::get_char_molecule (int code)  const
+{
+  Molecule  m ;
+  SCM at = scm_list_n (ly_symbol2scm ("char"), gh_int2scm (code),
+                      SCM_UNDEFINED);
+  at = fontify_atom (this, at);
+  Box b = get_char (code);
+  return Molecule (b, at);
+}
index e8f71657e4418ad57a121da57f960ab34d9100f2..e9bfd001dcbe9fd5d359d25547159ca62805b36e 100644 (file)
@@ -1,6 +1,8 @@
 #include "item.hh"
 #include "spanner.hh"
+#include "paper-column.hh"
 
+extern "C" {
 // thanks to GDBs wonderful casting abilities, we need these:
 Item*
 to_item (Grob* g)
@@ -12,3 +14,10 @@ to_spanner (Grob*g)
 {
   return dynamic_cast<Spanner*> (g);
 }
+
+Paper_column*
+to_pc (Grob* g)
+{
+  return dynamic_cast<Paper_column*> (g);
+}
+}
index 0c079c40d223d89d80c7cde2e8de5818f6ef7446..bbe997ce0b8355c2307b1ba4dee2fbb6d4e72339 100644 (file)
@@ -72,6 +72,7 @@ void
 Global_translator::one_time_step ()
 {
 }
+
 void
 Global_translator::start ()
 {
@@ -100,9 +101,6 @@ Global_translator::run_iterator_on_me (Music_iterator * iter)
       w = sneaky_insert_extra_moment (w);
       
       //      printf ("proccing %s\n ",       w.string ().to_str0 ());
-
-
-      
       if (first)
        {
          first = false;
@@ -116,3 +114,39 @@ Global_translator::run_iterator_on_me (Music_iterator * iter)
       one_time_step ();
     }
 }
+
+void
+Global_translator::apply_finalizations ()
+{
+  SCM lst = get_property ("finalizations");
+  set_property ("finalizations" , SCM_EOL); 
+  for (SCM s = lst ; gh_pair_p (s); s = gh_cdr (s))
+    {
+      scm_primitive_eval (gh_car (s));
+    }
+}
+
+/*
+   Add a function to execute before stepping to the next time step.
+ */
+void
+Global_translator::add_finalization (SCM x)
+{
+  SCM lst = get_property ("finalizations");
+  lst = scm_cons (x, lst);
+  set_property ("finalizations" ,lst); 
+}
+
+
+Global_translator *
+Translator::top_translator()const
+{
+  if (dynamic_cast<Global_translator*>((Translator*)this))
+    return dynamic_cast<Global_translator*> ((Translator*)this);
+
+  if (daddy_trans_)
+    return daddy_trans_->top_translator ();
+
+  programming_error ("No top translator!");
+  return 0;
+}
index 4d99819fa66b0cad13943b01db2768843ec11623..6668b66f4e9908b48f6c15b7ad9183598129cb01 100644 (file)
 #include "global-translator.hh"
 #include "warn.hh"
 
-
-Grace_iterator::~Grace_iterator () 
-{
-  //  child_iter_ = 0;
-}
-
-
 void
 Grace_iterator::process (Moment m)
 {
@@ -29,14 +22,6 @@ Grace_iterator::process (Moment m)
   Music_wrapper_iterator::process (main);
 }
 
-void
-Grace_iterator::construct_children ()
-{
-  Music_wrapper_iterator::construct_children ();
-}
-
-
-
 Moment
 Grace_iterator::pending_moment () const
 {
index 3aea71c70682302bb863ae8d1916e38f7e22347d..516e02ce0e5eb4ce196f0d04a7462303b5e20152 100644 (file)
@@ -36,14 +36,14 @@ Grace_music::start_mom () const
 Grace_music::Grace_music ()
 {
   set_mus_property ("iterator-ctor",
-                   Grace_iterator::constructor_cxx_function);
+                   Grace_iterator::constructor_proc);
 }
 
 Grace_music::Grace_music (SCM p)
   : Music_wrapper (p)
 {
   set_mus_property ("iterator-ctor",
-                   Grace_iterator::constructor_cxx_function);
+                   Grace_iterator::constructor_proc);
 }
 
 ADD_MUSIC (Grace_music);
index 0dfe3f78286b0b1706f23e9f17d0ad50e7491cff..3d1d350e0abb6b7d4d859715f50d7446aa49c57e 100644 (file)
@@ -28,6 +28,7 @@ int compare  (Grob_mom const &a, Grob_mom const &b)
   return Moment::compare (a.end_, b.end_);
 }
 
+
 class Grob_pq_engraver: public Engraver
 {
 public:
@@ -76,59 +77,41 @@ Grob_pq_engraver::acknowledge_grob (Grob_info gi)
     }
 }
 
+LY_DEFINE(ly_grob_pq_less_p, 
+         "ly-grob-pq-less?", 2 , 0 ,0, (SCM a, SCM b), 
+         "Compare 2 Grob PQ entries. Internal")
+{
+  if ( Moment::compare (*unsmob_moment (gh_car (a)),
+                                     *unsmob_moment (gh_car (b))) < 0)
+    return SCM_BOOL_T;
+  else
+    return SCM_BOOL_F;
+}
+         
+
 void
 Grob_pq_engraver::stop_translation_timestep ()
 {
   Moment now = now_mom();
 
   current_grobs_.sort (&compare);
-
+  SCM current_list = SCM_EOL;
+  for (int i = current_grobs_.size(); i--;)
+    current_list = scm_cons (scm_cons (current_grobs_[i].end_.smobbed_copy(), 
+                                      current_grobs_[i].grob_->self_scm ()), current_list);
+
+  /*
+    We generate some garbage here.
+   */
   SCM busy = get_property ("busyGrobs");
   while (gh_pair_p (busy) && *unsmob_moment (gh_caar (busy)) == now)
     {
       busy = gh_cdr (busy);
     }
   
-  SCM start = busy;
-  SCM * current_cell = &start;
-
-  int  i = 0; 
-  while (i  < current_grobs_.size ())
-    {
-      Moment stop;
-      stop.set_infinite (1);
-      
-      if (gh_pair_p (busy))
-       {
-         SCM h = gh_car (busy);
-         stop = *unsmob_moment (gh_car (h));
-       }
-
-      Moment current_stop = current_grobs_[i].end_;
-      if (current_stop <= stop)
-       {
-         SCM new_entry = gh_cons (current_stop.smobbed_copy(),
-                                  current_grobs_[i].grob_->self_scm ());
-
-         /*
-           Insert before BUSY.
-          */
-         i ++;
-         *current_cell = gh_cons (new_entry, busy);
-         current_cell = SCM_CDRLOC(*current_cell);
-       }
-      else
-       {
-         /*
-           if current_stop > stop, then stop != infty, and we
-           apparently have a next entry */
-         busy = gh_cdr (busy);
-         current_cell = SCM_CDRLOC(*current_cell);
-       }
-    }
-
+  busy = scm_merge_x (current_list, busy, ly_grob_pq_less_p_proc);
   current_grobs_.clear ();
-  daddy_trans_->set_property ("busyGrobs", start);
+  daddy_trans_->set_property ("busyGrobs", busy);
 }
 
 void
@@ -140,7 +123,11 @@ Grob_pq_engraver::start_translation_timestep ()
   SCM busy = start_busy;
   while (gh_pair_p (busy) && *unsmob_moment (gh_caar (busy)) < now)
     {
-      programming_error ("Skipped something ?!");
+      /*
+       Todo: do something sensible. The grob-pq-engraver is not water
+       tight, and stuff like tupletSpannerDuration confuses it.
+       */
+      programming_error (_f("Skipped something?\nGrob %s ended before I expected it to end.", unsmob_grob (gh_cdar (busy))->name().to_str0()));
       
       busy = gh_cdr (busy);
     }
@@ -152,7 +139,8 @@ Grob_pq_engraver::start_translation_timestep ()
 
 
 ENTER_DESCRIPTION(Grob_pq_engraver,
-/* descr */       "Administrate when certain grobs (eg. note heads) stop playing.
+/* descr */       "Administrate when certain grobs (eg. note heads) stop playing; this
+engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.
 ",
 /* creats*/       "",
 /* acks  */       "grob-interface",
index a30f020c8edee8978b6dfad794bebd5cb0d34bca..382cbe2de71742d05c32b45d27aa4594402360ef 100644 (file)
@@ -45,7 +45,7 @@ Grob::Grob (SCM basicprops)
   /*
     fixme: default should be no callback.
    */
-
+  self_scm_ = SCM_EOL;
   pscore_=0;
   status_ = 0;
   original_ = 0;
@@ -122,6 +122,8 @@ Grob::Grob (Grob const&s)
    : dim_cache_ (s.dim_cache_)
 {
   original_ = (Grob*) &s;
+  self_scm_ = SCM_EOL;
+
   immutable_property_alist_ = s.immutable_property_alist_;
 
   mutable_property_alist_ = SCM_EOL;
@@ -751,7 +753,7 @@ Grob::print_smob (SCM s, SCM port, scm_print_state *)
 }
 
 SCM
-Grob::do_derived_mark ()
+Grob::do_derived_mark () const
 {
   return SCM_EOL;
 }
index c2dd02232708b39562c4f7a06a74b5a28ac8316e..e906f9fcb45cb88787da161891168f6a41a58553 100644 (file)
@@ -19,6 +19,7 @@ public:
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));  
   static bool has_interface (Grob*);
   
+  static String get_fontcharname(String style, int alteration);
   static Array<Box> Accidental_interface::accurate_boxes (Grob *me,Grob**common);
 };
 
index bd64140e19086338c970517020bc215667190a6a..9a742a7de0d3783ac62ba454d50022e3ebc6f92c 100644 (file)
 #include "drul-array.hh"
 
 /**
-  Any piece of audio information.
-  We need virtual conclassors, 
-  let's try decentralised factory for specific audio implemenations.
-
+   
+  Any piece of audio information.  We need virtual constructors, let's
+  try decentralised factory for specific audio implemenations.
  */
 class Audio_item : public Audio_element
 {
index cc54df7dd2606a2fd5c890437a4724b3c5db3a02..4dad325f2877d9318d3297dfb86e8de896abfe5e 100644 (file)
@@ -17,18 +17,14 @@ class Auto_change_iterator : public Music_wrapper_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   
   Auto_change_iterator ();
 
 protected:
   virtual void process (Moment);  
-
-
   Array<Pitch> pending_pitch (Moment)const;
 private:
-
-  
   Direction where_dir_;
   void change_to (Music_iterator* , String, String);
 };
index b06afc0e4e20d1d256f53efe866f862d9c736b80..e5f544b706613994c3500fa3dafcf444b665b111 100644 (file)
@@ -26,7 +26,10 @@ public:
   static void set_beaming (Grob*,Beaming_info_list *);
   static void set_stemlens (Grob*);
   static int get_beam_count (Grob*me);
+
   static Real get_beam_translation (Grob*me);
+  static Real get_thickness (Grob*me);
+
   static void connect_beams (Grob*me);
   DECLARE_SCHEME_CALLBACK (space_function, (SCM, SCM));
   DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM));
index 65914db996237e85e854defb35ab061f5c6ef7e1..39e3f7a41d873a12fe292a3f04d1331b5637a7ea 100644 (file)
@@ -19,7 +19,8 @@ public:
   VIRTUAL_COPY_CONS (Music_iterator);
   /* constructor is public */
   virtual void process (Moment);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
+
 private:
   void  error (String);
 };
index e9583bf70498f00a41720d4a3bdecdea9724db2f..de5344874ac676895a4df2252b9461870e50f6d9 100644 (file)
@@ -16,17 +16,17 @@ class Chord_tremolo_iterator : public Music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   Chord_tremolo_iterator ();
   Chord_tremolo_iterator (Chord_tremolo_iterator const & );
 protected:
-  virtual ~Chord_tremolo_iterator ();
+  virtual void derived_mark () const;
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual void construct_children () ;
   virtual bool ok () const;
   virtual void process (Moment) ;
   virtual Music_iterator *try_music_in_children (Music *) const;
-
 private:
   Moment factor_;
   Music_iterator * child_iter_;
diff --git a/lily/include/cxx-function-smob.hh b/lily/include/cxx-function-smob.hh
deleted file mode 100644 (file)
index 9a99f19..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*   
-     cxx-function-smob.hh --  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef CXX_FUNCT_SMOB_HH
-#define CXX_FUNCT_SMOB_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-typedef void * (*Cxx_function) (SCM param);
-Cxx_function unsmob_cxx_function (SCM x);
-SCM smobify_cxx_function (Cxx_function cb);
-
-
-#endif /* CXX_FUNCT_SMOB_HH */
-
index c5c087c94f093730d292a8ed08e98296d5b1879f..4768ba0b90c8cc09266436b4f3fd8a5c9277b357 100644 (file)
@@ -20,14 +20,14 @@ class Folded_repeat_iterator : public Music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
 
   Folded_repeat_iterator (Folded_repeat_iterator const &src);
   Folded_repeat_iterator ();
-  ~Folded_repeat_iterator ();
-  
+  virtual void derived_mark () const;
   virtual void construct_children ();
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual bool ok () const;
 
 protected:
index e9f5598ece3893260e1c6eff8630e2bff3936c05..57cd47a75a8852fc2df313553aca2145c6f138d9 100644 (file)
@@ -24,13 +24,15 @@ public:
   
   virtual int count () const;
   virtual Box get_char (int ascii) const;
+  virtual Molecule get_char_molecule (int ascii) const;
   virtual Box text_dimension (String)  const;
   virtual Molecule find_by_name (String) const;
-
   DECLARE_SMOBS (Font_metric,);
 private:
   Font_metric (Font_metric const&); // no copy.
 protected:
+  virtual void derived_mark () const;
+
   Font_metric ();
 };
 
index c59cc3fb43405ed729c370ae64e425c9459d20d7..39d814747cd4e53158e93396c9d46c3a2045e1cb 100644 (file)
@@ -14,8 +14,8 @@
 #include "moment.hh"
 #include "pqueue.hh"
 
-
-class Global_translator : public virtual Translator_group{
+class Global_translator : public virtual Translator_group
+{
   PQueue<Moment> extra_mom_pq_;
 public:
   VIRTUAL_COPY_CONS (Translator);
@@ -28,6 +28,9 @@ public:
   Moment sneaky_insert_extra_moment (Moment);
   void add_moment_to_process (Moment);
   void run_iterator_on_me (Music_iterator*);
+
+  void apply_finalizations ();
+  void add_finalization (SCM);
   
   virtual Music_output *get_output ();     
   virtual void prepare (Moment);
index b44bc8c41b8129b7a66d17893ebca55b2c7a5a7b..f758bbd6f8bed460d7737523e004cfb80ebd3770 100644 (file)
@@ -16,10 +16,8 @@ class Grace_iterator : public Music_wrapper_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  ~Grace_iterator ();
-  virtual void construct_children () ;
   virtual void process (Moment);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   Moment pending_moment () const;
 };
 
index 8f11341b254259805f4899dd743f5f48d6412b80..ebc46be195440b6c121cf60668dd789d96b68e12 100644 (file)
@@ -107,7 +107,7 @@ public:
   virtual void do_break_processing ();
   virtual Grob *find_broken_piece (System*) const;
   virtual void discretionary_processing ();
-  virtual SCM do_derived_mark ();
+  virtual SCM do_derived_mark () const;
 
   Molecule * get_molecule () const;
   SCM get_uncached_molecule () const;
index 0dbf9431a5ff70af7ba5402b1d06afce44d73dce..93786a520340b5129d525c51eeeaed23148d7cf0 100644 (file)
@@ -23,6 +23,7 @@ public:
   Interpretation_context_handle (Interpretation_context_handle const&);
   Translator_group * report_to () const;
 
+  void quit ();
 private:
   Translator_group * report_to_;
   void down ();
index 58c9969b62df8a64ac2e17bbebcdf073dd0b7b1d..8a0fd0b4b7b9ef4e2ec69a4b5643e22cc85a6c2d 100644 (file)
@@ -44,7 +44,7 @@ public:
 protected:
   virtual void discretionary_processing ();
   void copy_breakable_items ();
-  virtual SCM do_derived_mark ();
+  virtual SCM do_derived_mark () const;
 };
 
 
index f72a67f5ecda835133624358981f87729d2e4987..e447afb5b1b356f5e638055db73a2fbabf2f0e70 100644 (file)
@@ -58,7 +58,7 @@ inline SCM scm_c_make_vector  (int k, SCM val) {
 }
 #define scm_c_define_gsubr scm_make_gsubr
 #define scm_c_eval_string(str) gh_eval_str ((char*)str)
-
+#define scm_remember_upto_here_1(s) scm_remember (&s)
 #define scm_gc_protect_object scm_protect_object
 #define scm_gc_unprotect_object scm_unprotect_object
 #define scm_list_n scm_listify
@@ -105,6 +105,12 @@ SCM ly_deep_copy (SCM);
 SCM ly_truncate_list (int k, SCM l );
 
 
+/*
+  Unreliable on gcc2
+ */
+// #define CACHE_SYMBOLS
+
+
 #if (__GNUC__ > 2)
 /*
   todo: should add check for x86 as well
@@ -269,19 +275,28 @@ public:\
 } _ ## name ## _scm_initter;                   \
 /* end define */
 
-#define LY_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
-SCM FNAME ARGLIST ; \
+#define LY_DEFINE_WITHOUT_DECL(INITPREFIX, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
 SCM FNAME ## _proc;\
 void \
-FNAME ## init ()\
+INITPREFIX ## init ()\
 {\
  FNAME ## _proc \
     = scm_c_define_gsubr (PRIMNAME,REQ, OPT, VAR, (Scheme_function_unknown) FNAME);\
   ly_add_function_documentation (PRIMNAME, #ARGLIST,  DOCSTRING);\
 }\
-ADD_SCM_INIT_FUNC (FNAME ## init_unique_prefix, FNAME ## init);\
+ADD_SCM_INIT_FUNC (INITPREFIX ## init_unique_prefix, INITPREFIX ## init);\
 SCM \
 FNAME ARGLIST\
 
 
+#define LY_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
+SCM FNAME ARGLIST ; \
+LY_DEFINE_WITHOUT_DECL(FNAME, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) 
+
+
+#define LY_DEFINE_MEMBER_FUNCTION(CLASS, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
+SCM FNAME ARGLIST ; \
+LY_DEFINE_WITHOUT_DECL(CLASS ## FNAME,  CLASS::FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) 
+
+
 #endif /* LILY_GUILE_HH */
index 49251c0fe19da4e710eb5c5dee4d229ee6623565..e85fc6ab635f09c9955d84dc5fcf4c5f425281ca 100644 (file)
@@ -19,16 +19,16 @@ public:
   VIRTUAL_COPY_CONS (Music_iterator);
   Lyric_combine_music_iterator ();
   Lyric_combine_music_iterator (Lyric_combine_music_iterator const&src);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
 protected:
   virtual void construct_children ();
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual void process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
   
   virtual bool ok () const;
-  virtual ~Lyric_combine_music_iterator ();
-
+  virtual void derived_mark () const;
 private:
   bool get_busy_status ()const ;
   Music_iterator * music_iter_;
index fd4833d71fe3b7c65d172f91bdd72ecde9007cfb..a1b887066f840c23c0d782e9324bdebc887a0436 100644 (file)
@@ -89,7 +89,7 @@ public:
 
 
 DECLARE_UNSMOB(Molecule,molecule);
-SCM fontify_atom (Font_metric*, SCM atom);
+SCM fontify_atom (Font_metric const*, SCM atom);
 
 Molecule create_molecule (SCM brew_molecule);
 
index 759a55abb763c7c0c3c444ad4c0dc6f855bec836..e005bd60d395c5f71bddc6c7a6548721e2f6633f 100644 (file)
@@ -15,7 +15,7 @@
 #include "moment.hh"
 #include "virtual-methods.hh"
 #include "interpretation-context-handle.hh"
-#include "cxx-function-smob.hh"
+#include "smobs.hh"
 
 /**
    ---
@@ -62,14 +62,15 @@ class Music_iterator
 protected:
   Moment music_length_;
   Moment start_mom_;
+
+  DECLARE_SMOBS (Music_iterator,dummy);
 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 ();
 
   /**
      Do the reporting.  Will try MUSIC_L_ in its own translator first,
@@ -87,61 +88,53 @@ public:
   /** Get an iterator matching the type of MUS, and use TRANS to find
     an accompanying translation unit
    */
-  static Music_iterator* get_static_get_iterator (Music * mus);
+  static SCM get_static_get_iterator (Music * mus);
   void init_translator (Music  *, Translator_group *); 
+void quit ();
 
+  
   virtual Moment pending_moment () const;
   virtual bool ok () const;
   virtual SCM get_pending_events (Moment until)const;
   virtual void process (Moment until);
   virtual void skip (Moment until);
-
+  virtual void derived_mark ()const;
+  virtual void construct_children ();
+  
   /**
     Construct sub-iterators, and set the translator to 
     report to.
    */
-  virtual void construct_children ();
-  static SCM constructor_cxx_function;
+
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   
   /**
     Get an iterator for MUS, inheriting the translation unit from THIS.
    */
-  Music_iterator* get_iterator (Music *) const;
+  SCM get_iterator (Music *) const;
 
   virtual Music_iterator* try_music_in_children (Music *) const;
 
   Music * get_music () const;
+protected:
+  virtual void do_quit();
 private:
   Interpretation_context_handle handle_;
   Music  * music_;
 };
 
 
-/*
-  implement Class::constructor, a SCM function that
-  returns an encapsulated factory function.
- */
 #define IMPLEMENT_CTOR_CALLBACK(Class)         \
-static void *                                          \
-Class ## _ctor (SCM)                           \
+LY_DEFINE_MEMBER_FUNCTION(Class,constructor, #Class "::constructor",\
+         0,0,0,\
+         (),\
+         "Construct a " #Class " music iterator")\
 {                                              \
-  return new Class ;                           \
+  SCM val = (new Class)->self_scm();   \
+  scm_gc_unprotect_object (val);\
+  return val ;                         \
 }                                              \
-SCM Class :: constructor_cxx_function;\
-void                                           \
-Class ## _constructor_init ()                          \
-{                                              \
-  SCM s = smobify_cxx_function (& Class ## _ctor);     \
-  scm_permanent_object (s);\
-  gh_define (#Class "::constructor", s);\
-  Class :: constructor_cxx_function = s;\
-}\
-ADD_SCM_INIT_FUNC (Class ## _ctor_init, Class ## _constructor_init); 
-
-
-
-
 
+DECLARE_UNSMOB(Music_iterator, iterator);
 
 #endif // MUSIC_ITERATOR_HH
index ad031f588d39074d51bea8a8127f84cc427da247..2d985372e85a147f9bfe94495eee7ebf44f13bad 100644 (file)
@@ -22,13 +22,14 @@ class Music_wrapper_iterator : public Music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;  
+  DECLARE_SCHEME_CALLBACK(constructor, ());  
   Music_wrapper_iterator ();
   Music_wrapper_iterator (Music_wrapper_iterator const&);
-  ~Music_wrapper_iterator ();
 
+  virtual void derived_mark () const;
   virtual void construct_children () ;
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual bool ok () const;
   virtual SCM get_pending_events (Moment)const;
   virtual void skip (Moment);
index f7f62efc35473114b8499ced7e27af6d36b19cea..d9b67bb9b6a4f0a137c1e0aa8fde957b8334ef48 100644 (file)
@@ -75,6 +75,12 @@ protected:
   virtual bool do_equal_b (Request const*) const;
 };
 
+class String_number_req : public Script_req
+{
+protected:
+  VIRTUAL_COPY_CONS (Music);
+  virtual bool do_equal_b (Request const*) const;
+};
 
 /// request which has some kind of pitch
 struct Melodic_req :virtual Request
index 6677fb283e0b7a62872cf43ae28beb02e9e52c2f..b9cf40b015d946a313d0d2de88db84c73eef51e3 100644 (file)
@@ -15,7 +15,7 @@ class Output_property_music_iterator : public Simple_music_iterator
 {
 public:  
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   /* construction */
 protected:
   virtual void process (Moment);
index 713c33304803707586355a11bb6fd2bc0e87e600..fa88a2dc5ef59f1a3c1d25b931ffc3ea9048db3f 100644 (file)
@@ -19,12 +19,13 @@ public:
   Part_combine_music_iterator ();
 
   enum State { UNKNOWN, UNRELATED=1, SOLO1=2, SOLO2=4, UNIRHYTHM=8, UNISON=16, UNISILENCE=32, SPLIT_INTERVAL=64 };
-  static SCM constructor_cxx_function
+  DECLARE_SCHEME_CALLBACK(constructor, ())
 protected:
-  virtual ~Part_combine_music_iterator ();
+  virtual void derived_mark () const;
   Part_combine_music_iterator (Part_combine_music_iterator const &);
   virtual void construct_children ();
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual void process (Moment);
   virtual SCM get_pending_events (Moment)const;
   virtual Music_iterator *try_music_in_children (Music *) const;
index c73e995cb9c7f661f3923b0f2d5b17f46c275b9a..a2c420e01f0af3f79c413064f0c1ba7a0fd36556 100644 (file)
@@ -16,12 +16,13 @@ class Percent_repeat_iterator : public Music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   Percent_repeat_iterator ();
   Percent_repeat_iterator (Percent_repeat_iterator const & );
 protected:
-  virtual ~Percent_repeat_iterator ();
+  virtual void derived_mark () const;
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual void construct_children () ;
   virtual bool ok () const;
   virtual void process (Moment) ;
index 9dd3b2cce08abb650bd8cca34278ee5991359e6b..50485ed15c1a092cd007e2a047502ee48418296a 100644 (file)
@@ -22,9 +22,11 @@ class Property_iterator : public Simple_music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
-  /* construction */
+  DECLARE_SCHEME_CALLBACK(constructor, ());
+  DECLARE_SCHEME_CALLBACK(once_finalization, (SCM, SCM ));
+
 protected:
+  virtual void do_quit();
   virtual void process (Moment);
 };
 
@@ -38,8 +40,7 @@ class Property_unset_iterator : public Simple_music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
-  /* construction */
+  DECLARE_SCHEME_CALLBACK(constructor, ());
 protected:
   virtual void process (Moment);
 };
@@ -48,19 +49,19 @@ class Push_property_iterator : public Simple_music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;  
+  DECLARE_SCHEME_CALLBACK(constructor, ());  
+  DECLARE_SCHEME_CALLBACK(once_finalization, (SCM, SCM));
 protected:
-  /* construction */
   virtual void process (Moment);
+  virtual void do_quit();
 };
 
 class Pop_property_iterator : public Simple_music_iterator
 {
 public:
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   VIRTUAL_COPY_CONS (Music_iterator);
 protected:
-  /* construction */
   virtual void process (Moment);
 };
 
index 645b1c200bf0b9a0045705744fd1d8003381fab9..b9eabca0dae6caa1d300c7ebd243d578f1152724 100644 (file)
@@ -31,7 +31,7 @@ class Request_chord_iterator : public Simple_music_iterator
   enum { NONE_DONE, START_DONE, END_DONE }  status_;
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   Request_chord_iterator ();
   Request_chord_iterator (Request_chord_iterator const&);
 
index 09159dac36a62c91d2a0245569a1ea75ceac26d3..efdc5634ea177defdea8b81ae57865958ee88c64 100644 (file)
@@ -54,13 +54,14 @@ public:
   Grace_fixup * grace_fixups_;
   
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   Sequential_iterator ();
   Sequential_iterator (Sequential_iterator const&);
-  virtual ~Sequential_iterator ();
+  virtual void derived_mark () const;
 
   virtual void construct_children ();
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual bool ok () const;
   virtual void skip (Moment);
   virtual SCM get_pending_events (Moment)const;
@@ -72,7 +73,7 @@ protected:
 protected:
   Moment here_mom_;
   Music_iterator * iter_;
-  Protected_scm  list_;
+  SCM  list_;
   SCM cursor_;
   
   virtual void next_element (bool side_effect);
index 31d4220927a1b8c2277ef4c0afe46891b3d0dd8b..b327fcfa96622331b17aad9ab8a84a5477d1ce30 100644 (file)
@@ -19,7 +19,7 @@ class Sequential_music_iterator :  public Sequential_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
 private:
   virtual SCM get_music_list()const;
   virtual void descend_to_child ();
index c969a3ba953025997124644d2aa6e8704f79d9c9..d154b144614e4a36c2bfe4d8237fe52d516a36d0 100644 (file)
@@ -23,12 +23,13 @@ protected:
   Moment last_processed_mom_;
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function
+  DECLARE_SCHEME_CALLBACK(constructor, ())
   Simple_music_iterator ();
   Simple_music_iterator (Simple_music_iterator const &);
   virtual void process (Moment);
   virtual bool ok ()const;
   virtual Moment pending_moment ()const;
+
   virtual void skip (Moment);
 };
 
index 8d25491da1e450ec0924fc92c403003cb72d7cde..f922492dea12c4dc91067436ed62f7f37aff0e17 100644 (file)
@@ -11,7 +11,6 @@
 #define SIMULTANEOUS_MUSIC_ITERATOR_HH
 
 #include "music-iterator.hh"
-#include "cons.hh"
 
 class Simultaneous_music_iterator : public Music_iterator
 {
@@ -19,15 +18,15 @@ public:
   VIRTUAL_COPY_CONS (Music_iterator);
   Simultaneous_music_iterator ();
   Simultaneous_music_iterator (Simultaneous_music_iterator const&);
-  virtual ~Simultaneous_music_iterator ();
-  static SCM constructor_cxx_function;
+  virtual void derived_mark () const;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   
   /// make a new context for every child.
   bool separate_contexts_b_;
-  int cursor_;
 
   virtual void construct_children ();
   virtual Moment pending_moment () const;
+  virtual void do_quit(); 
   virtual bool ok () const;
   virtual SCM get_pending_events (Moment)const;
   virtual void skip (Moment);
@@ -37,7 +36,7 @@ protected:
   virtual Music_iterator *try_music_in_children (Music *) const;
 
 private:
-  Cons_list<Music_iterator> children_p_list_;
+  SCM children_list_;
 };
 
 #endif // SIMULTANEOUS_MUSIC_ITERATOR_HH
index b587a594fd62fee7c46aac6876b6d2394c49454b..fff428f8acd67083610c96f676cc2003995c81d4 100644 (file)
@@ -8,6 +8,7 @@
 #include "string.hh"
 #include "interval.hh"
 #include "protected-scm.hh"
+#include "parray.hh"
 
 /**
   class for reading and mapping a file. 
@@ -50,13 +51,16 @@ public:
   int get_char (char const* pos_str0) const;
 
   /*
-    DOCUMENT-ME
+    JUNKME.
+
+    This thing doubles as a file-storage/file-iterator object.
    */
   char const* pos_str0_;
 
   SCM get_port()const { return str_port_; }
 private:
   String name_string_;
+  Link_array<char> newline_locations_; 
   std::istream* istream_;
   char  * contents_str0_;
   int length_;
index c146182f178807a527ddd34945d5e70040b16e13..e56560744e51b6d08c038e19b285a54e8156b475 100644 (file)
@@ -55,7 +55,7 @@ public:
 
   static int compare (Spanner * const &,Spanner * const &);
   virtual Grob* find_broken_piece (System*) const;
-  virtual SCM do_derived_mark ();
+  virtual SCM do_derived_mark () const;
   static bool has_interface (Grob*);
   virtual System *get_system () const;
 protected:
index 2ddcdf298c2fbb1f8b41bd6f49af134836cf6d4d..227190875931a2ce66f640d2c9ee375934dc58ff 100644 (file)
@@ -16,7 +16,7 @@ class Time_scaled_music_iterator : public Music_wrapper_iterator
 {
 public:  
   VIRTUAL_COPY_CONS (Music_iterator);
-  static SCM constructor_cxx_function
+  DECLARE_SCHEME_CALLBACK(constructor, ())
   /* construction */
 protected:
   virtual void process (Moment);
index 97784a82a980136b90e27b5bc44c2cc6e97fb407..4b27559aa91c15b246b07ffc5df937d3dc857890 100644 (file)
@@ -66,7 +66,9 @@ public:
   SCM properties_scm_;
   DECLARE_SMOBS (Translator, dummy);
 
+
 public:
+  Global_translator * top_translator () const;
   TRANSLATOR_DECLARATIONS(Translator);
     /**
     try to fit the request in this engraver
diff --git a/lily/include/virtual-font-metric.hh b/lily/include/virtual-font-metric.hh
new file mode 100644 (file)
index 0000000..13befc1
--- /dev/null
@@ -0,0 +1,34 @@
+
+/*   
+virtual-font-metric.hh -- declare Virtual_font_metric
+
+source file of the GNU LilyPond music typesetter
+
+(c) 2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef VIRTUAL_FONT_METRIC_HH
+#define VIRTUAL_FONT_METRIC_HH
+
+#include "font-metric.hh"
+
+class Virtual_font_metric : public Font_metric
+{
+  SCM font_list_;
+public:
+  Virtual_font_metric (SCM namelist, Real, Paper_def*);
+
+  virtual int count () const;
+  virtual Box get_char (int ascii) const;
+  virtual Molecule get_char_molecule (int ascii) const;
+  
+  virtual Molecule find_by_name (String) const;
+
+protected:
+  virtual void derived_mark () const;
+};
+
+
+#endif /* VIRTUAL_FONT_METRIC_HH */
+
index 3c1e38153ae250b76b472a20570f25e5b3d97a50..7b0afb6a1e60019737c8f61cd0671b851c098759 100644 (file)
@@ -31,8 +31,14 @@ Interpretation_context_handle::clone () const
 
 Interpretation_context_handle::~Interpretation_context_handle ()
 {
-  if (report_to_)
-    down ();
+  /*
+    Don't do
+
+    if (report_to_)
+      down ();
+
+    with GC, this is asynchronous.
+   */
 }
 
 void
@@ -49,10 +55,20 @@ Interpretation_context_handle::down ()
   report_to_ = 0;
 }
 
+void
+Interpretation_context_handle::quit ()
+{
+  if (report_to_)
+    {
+      report_to_->iterator_count_ --;
+      report_to_ = 0;
+    }
+}
+
 bool
 Interpretation_context_handle::try_music (Music *m)
 {
-  return  report_to_->try_music (m);
+  return report_to_->try_music (m);
 }
 
 void
@@ -75,6 +91,7 @@ Interpretation_context_handle::set_translator (Translator_group*trans)
 Translator_group*
 Interpretation_context_handle::report_to ()const
 {
+  
   return report_to_;
 }
 
index 12d4d48a47c238576b82f771b6e980c88aa06624..77083104e06e4c2cf86f052592a52f263ccf5d77 100644 (file)
@@ -174,7 +174,7 @@ Item::handle_prebroken_dependencies ()
 }
 
 SCM
-Item::do_derived_mark ()
+Item::do_derived_mark ()const
 {
   if (broken_to_drul_[LEFT])
     scm_gc_mark (broken_to_drul_[LEFT]->self_scm ());
index 7b3c9ab3a1872aff183e7fd687061b641d949d22..81946e2769ef161fa84c51ba8c11a58e9b3f53c7 100644 (file)
@@ -17,7 +17,7 @@
 #include "lookup.hh"
 #include "lily-guile.hh"
 #include "lily-proto.hh"
-
+#include "accidental-interface.hh"
 
 struct Key_signature_interface
 {
@@ -99,7 +99,7 @@ Key_signature_interface::brew_molecule (SCM smob)
   Grob*me =unsmob_grob (smob);
 
   Real inter = Staff_symbol_referencer::staff_space (me)/2.0;
-  
+
   SCM scm_style = me->get_grob_property ("style");
   String style;
   if (gh_symbol_p (scm_style))
@@ -115,25 +115,34 @@ Key_signature_interface::brew_molecule (SCM smob)
   Molecule mol;
 
   SCM c0s = me->get_grob_property ("c0-position");
-  int c0p=0;
+  int c0p = 0;
   if (gh_number_p (c0s))
-     c0p = gh_scm2int (c0s);
+    c0p = gh_scm2int (c0s);
 
   /*
     SCM lists are stacks, so we work from right to left, ending with
     the cancellation signature.
   */
 
+  Font_metric *fm = Font_interface::get_default_font (me);
   for (SCM s = newas; gh_pair_p (s); s = ly_cdr (s))
     {
-      SCM what = ly_caar (s);
-      int alter = gh_scm2int (ly_cdar (s));
-      int pos = alteration_pos (what, alter, c0p);
-      
-      Molecule m = Font_interface::get_default_font (me)->
-         find_by_name (String ("accidentals-") + style + to_string (alter));
-      m.translate_axis (pos * inter, Y_AXIS);
-      mol.add_at_edge (X_AXIS, LEFT, m, 0);
+      int alteration = gh_scm2int (ly_cdar (s));
+      String font_char =
+       Accidental_interface::get_fontcharname (style, alteration);
+      Molecule acc (fm->find_by_name ("accidentals-" + font_char));
+
+      if (acc.empty_b())
+       {
+         me->warning (_f ("accidental `%s' not found", font_char));
+       }
+      else
+       {
+         SCM what = ly_caar (s);
+         int pos = alteration_pos (what, alteration, c0p);
+         acc.translate_axis (pos * inter, Y_AXIS);
+         mol.add_at_edge (X_AXIS, LEFT, acc, 0);
+       }
     }
 
   Item *it = dynamic_cast<Item*> (me) ;
@@ -163,8 +172,8 @@ Key_signature_interface::brew_molecule (SCM smob)
              || ly_cdr (found) != ly_cdar (old))
            {
              SCM what = ly_caar (old);
-             int alter = 0;
-             int pos = alteration_pos (what, alter, c0p);
+             int alteration = 0;
+             int pos = alteration_pos (what, alteration, c0p);
 
              Molecule m = natural;
               m.translate_axis (pos* inter, Y_AXIS);
index 9579aae41f89cdf614afbb12b57c44d12e3948ac..a8a521143789d35e04ce4615858d1d81205b57bd 100644 (file)
@@ -9,6 +9,18 @@
 #include <stdio.h>
 #include <string.h>
 
+/*
+
+The problem, as far as I can tell, is that MacOS X has its getopt
+prototype in <unistd.h>, while I think other operating systems have it
+in other places. <unistd.h> is included by kpathsea.h, so you end up
+renaming both conflicting prototypes to YAKLUDGE.
+
+I found a somewhat more elegant patch for this: Just #include
+<unistd.h> before defining YAKLUDGE.
+
+*/
+#include <unistd.h>    
 #include "config.h"
 
 #define popen REALLYUGLYKLUDGE
index 78b43638f2e5fb997be3b990025f45d7e4fccfb3..48d8c3564048cdac9e594947b7161ebfac8c5bd8 100644 (file)
@@ -113,6 +113,7 @@ WORD                {A}{AN}*
 ALPHAWORD      {A}+
 DIGIT          {N}
 UNSIGNED       {N}+
+E_UNSIGNED     \\{N}+
 FRACTION       {N}+\/{N}+
 INT            -?{UNSIGNED}
 REAL           ({INT}\.{N}*)|(-?\.{N}+)
@@ -303,6 +304,10 @@ HYPHEN             --
                yylval.i = String_convert::dec2int (String (YYText ()));
                return UNSIGNED;
        }
+       {E_UNSIGNED}    {
+               yylval.i = String_convert::dec2int (String (YYText () +1));
+               return E_UNSIGNED;
+       }
 
        \" {
                start_quote ();
@@ -398,6 +403,9 @@ HYPHEN              --
        \/\+ {
                return CHORD_BASS;
        }
+       \/  {
+               return CHORD_SLASH;
+       }
        \^  {
                return CHORD_CARET;
        }
@@ -435,6 +443,7 @@ HYPHEN              --
        return UNSIGNED;
 }
 
+
 [{}]   {
 
        return YYText ()[0];
@@ -471,6 +480,7 @@ HYPHEN              --
        return E_TILDE;
     case '\\':
        return E_BACKSLASH;
+
     default:
        return E_CHAR;
     }
index ee1690ac4ab8ffcc60ea6e596113a8492857b95b..8959988fef035eda279cf4c898bdb032e71a808c 100644 (file)
  * "rhythmic-head-interface" in the interfaces list.  Otherwise, text
  * scripts (such as fermata) are horizontally aligned with the end of
  * the ligature rather than with the associated head.  Why?
- *
- * TODO: if properties font-family and style are not set properly
- * (e.g. by a user erronously setting font-family to #'music),
- * lilypond currently crashes with the message: "lilypond:
- * ../flower/include/interval.hh:28: Real Interval_t<double>::center()
- * const: Assertion `!empty_b ()' failed.".  The code of this class
- * should be clever enough to foresee a potential crash, print a
- * warning, and supply sensible default values that avoid the crash.
  */
 MAKE_SCHEME_CALLBACK (Ligature_head,brew_molecule,1);
 SCM
index 278478140091c88f62bf2612478b99a267541955..7a08f7d3f30227842b6c5068a2782368c70f2dee 100644 (file)
 #include <stdlib.h>
 #include <math.h>   /* isinf */
 #include <string.h> /* strdup, strchr */
+
+
+#include "lily-proto.hh"
+
+/* macosx fix:
+
+
+ source-file.hh includes cmath which undefines isinf and isnan
+*/
+inline int my_isinf(Real r) { return isinf(r); }
+inline int my_isnan(Real r) { return isnan(r); }
+
+
+
 #include "libc-extension.hh"
 #include "lily-guile.hh"
 #include "main.hh"
 
 // #define TEST_GC
 
-#ifdef PARANOID
-#include <libguile/gc.h>
-#undef gh_pair_p
-bool
-ly_pair_p (SCM x)
-{
-#if 0
-  assert (!SCM_CONSP (x) || (*(scm_t_bits*) SCM2PTR (SCM_CAR (x))) != scm_tc_free_cell);
-  assert (!SCM_CONSP (x) || (*(scm_t_bits*) SCM2PTR (SCM_CDR (x))) != scm_tc_free_cell);
-#elif GUILE_MINOR_VERSION < 5
-  assert (!SCM_CONSP (x) || !SCM_FREEP (SCM_CAR (x)));
-  assert (!SCM_CONSP (x) || !SCM_FREEP (SCM_CDR (x)));
-#else
-  assert (!SCM_CONSP (x) || !SCM_FREE_CELL_P (SCM_CAR (x)));
-  assert (!SCM_CONSP (x) || !SCM_FREE_CELL_P (SCM_CDR (x)));
-#endif  
-  //return SCM_NFALSEP (scm_pair_p (x));
-  return gh_pair_p (x); 
-}
-#define gh_pair_p ly_pair_p
-#endif
-
 SCM
 ly_last (SCM list)
 {
@@ -106,7 +98,7 @@ gulp_file_to_string (String fn)
   int n;
   char * str = gulp_file (s, &n);
   String result (str);
-  delete str;
+  delete[] str;
   
   if (verbose_global_b)
     progress_indication ("]");
@@ -201,8 +193,6 @@ void add_scm_init_func (void (*f) ())
   scm_init_funcs_->push (f);
 }
 
-extern void init_cxx_function_smobs ();
-
 
 void
 ly_init_guile ()
@@ -210,7 +200,6 @@ ly_init_guile ()
   SCM last_mod = scm_current_module ();
   scm_set_current_module (scm_c_resolve_module ("guile"));
   
-  init_cxx_function_smobs ();
   for (int i=scm_init_funcs_->size () ; i--;)
     (scm_init_funcs_->elem (i)) ();
 
@@ -319,11 +308,6 @@ ly_scm2offset (SCM s)
                 gh_scm2double (ly_cdr (s)));
 }
 
-
-/*
-  convert without too many decimals, and leave  a space at the end.
- */
-   
    
 LY_DEFINE(ly_number2string,  "ly-number->string", 1, 0,0,
          (SCM s),
@@ -339,7 +323,7 @@ leaves a space at the end.
     {
       Real r (gh_scm2double (s));
 
-      if (isinf (r) || isnan (r))
+      if (my_isinf (r) || my_isnan (r))
        {
          programming_error ("Infinity or NaN encountered while converting Real number; setting to zero.");
          r = 0.0;
@@ -359,7 +343,7 @@ leaves a space at the end.
   Undef this to see if GUILE GC is causing too many swaps.
  */
 
-// #define TEST_GC
+//#define TEST_GC
 
 #ifdef TEST_GC
 #include <libguile/gc.h>
index 75a7d89e6875565e7847acdc4260d7102ab198f9..127945b3d6276e47848c17c2f7b76560bbc3e3ce 100644 (file)
@@ -31,9 +31,9 @@ Lyric_combine_music_iterator::Lyric_combine_music_iterator ()
       melisma_playing_req = new Melisma_playing_req;
       melisma_stop_req = new Melisma_req;
       melisma_start_req = new Melisma_req;      
+      melisma_start_req->set_span_dir (START);
+      melisma_stop_req->set_span_dir (STOP);
     }
-  melisma_start_req->set_span_dir (START);
-  melisma_stop_req->set_span_dir (STOP);
   
   music_iter_ =0;
   lyric_iter_ =0;
@@ -52,14 +52,22 @@ Lyric_combine_music_iterator::ok () const
   return music_iter_->ok ();
 }
 
+void
+Lyric_combine_music_iterator::derived_mark()const
+{
+  if (music_iter_)
+    scm_gc_mark (music_iter_->self_scm());
+  if (lyric_iter_)
+    scm_gc_mark (lyric_iter_->self_scm());
+}
 
 void
 Lyric_combine_music_iterator::construct_children ()
 {
   Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (get_music ());
   
-  music_iter_ = get_iterator (m->get_music ());
-  lyric_iter_ = get_iterator (m->get_lyrics ());
+  music_iter_ = unsmob_iterator (get_iterator (m->get_music ()));
+  lyric_iter_ = unsmob_iterator (get_iterator (m->get_lyrics ()));
 }
 
 bool
@@ -102,21 +110,13 @@ Lyric_combine_music_iterator::process (Moment m)
   
   music_iter_->process (m);
 
-  if ( get_busy_status ())
+  if (get_busy_status ())
     {
       bool melisma_b = try_music (melisma_playing_req);
       if (!melisma_b)
        {
          if (lyric_iter_->ok ())
            {
-             // FIXME
-#if 0                          // devise a new way for this
-             if (melisma_b && !melisma_started_b_)
-               lyric_iter_->try_music (melisma_start_req);
-             else if (melisma_started_b_)
-               lyric_iter_->try_music (melisma_stop_req);
-#endif
-             
              Moment m= lyric_iter_->pending_moment ();
              lyric_iter_->process (m);
            }
@@ -124,18 +124,25 @@ Lyric_combine_music_iterator::process (Moment m)
     }
   
 }
-
-Lyric_combine_music_iterator::~Lyric_combine_music_iterator ()
+void
+Lyric_combine_music_iterator::do_quit ()
 {
-  delete lyric_iter_;
-  delete music_iter_;
+  if (music_iter_)
+    music_iter_->quit();
+  if (lyric_iter_)
+    lyric_iter_->quit();
+  
 }
-
 Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src)
     : Music_iterator (src)
 {
   lyric_iter_ = src.lyric_iter_ ? src.lyric_iter_->clone () : 0;
   music_iter_ = src.music_iter_ ? src.music_iter_->clone () : 0;  
+
+  if (lyric_iter_)
+    scm_gc_unprotect_object (lyric_iter_->self_scm());
+  if (music_iter_)
+    scm_gc_unprotect_object (music_iter_->self_scm());
 }
 
 Music_iterator*
index 861f2f1886fa59407442ee9c734db286baee7a55..8e36faa6747190296c2ac9da5ed56b639fd40e76 100644 (file)
@@ -15,7 +15,7 @@ Lyric_combine_music::Lyric_combine_music (SCM l)
   : Music (l)
 {
   set_mus_property ("iterator-ctor",
-                   Lyric_combine_music_iterator::constructor_cxx_function);
+                   Lyric_combine_music_iterator::constructor_proc);
 }
 
 
index 3375142449239b40e8baffc8f95c8ef63c1f3ef1..dd856b5a810d78b748a851e8fde2f1374409c208 100644 (file)
@@ -263,7 +263,7 @@ setup_paths ()
     for (char **s = suffixes; *s; s++)
       {
        String p = prefix_directory[i] + to_string ('/') + String (*s);
-       global_path.add (p);
+       global_path.prepend (p);
        
 #if !KPATHSEA
        /* Urg: GNU make's $ (word) index starts at 1 */
index 999ea817a4c9dcc3b44fb9af2508d35194a6a758..3c8637f04a132d381be31afca20417717cd3a7fb 100644 (file)
@@ -426,24 +426,9 @@ Mensural_ligature_engraver::propagate_properties ()
     gh_scm2double (thickness_scm) : 1.4;
   thickness *= finished_ligature_->get_paper ()->get_var ("linethickness");
 
-  /*
-   * FIXME: Since character "noteheads--1mensural" is defined in
-   * parmesan font only, the right-hand expression in the
-   * following assignment evaluates to a width of 0.0, in case
-   * font-family of finished_ligature_ is _not_ set to "ancient"
-   * (by default, it is; see grob properties of MensuralLigature
-   * in scm/grob-description.scm).  This may arise severe problems
-   * in the future when switching between fonts (e.g. mensural
-   * versus neo-mensural).
-   */
   Real head_width =
     Font_interface::get_default_font (finished_ligature_)->
     find_by_name ("noteheads--1mensural").extent (X_AXIS).length ();
-  if (head_width == 0.0)
-    {
-      programming_error ("Mensural_ligature_engraver: failed evaluating head_width (most probably a font-family selection problem)");
-    }
-
   SCM flexa_width_scm =
     finished_ligature_->get_grob_property ("flexa-width");
   Real flexa_width = (flexa_width_scm != SCM_EOL) ?
index 1a5efa8c76abbf0347f7c794051e376a484d88c3..15cc8f2f07c37e5d281144eed8fa14b2226b77c0 100644 (file)
@@ -262,7 +262,7 @@ dumped in the output file.")
 }
 
 SCM
-fontify_atom (Font_metric * met, SCM f)
+fontify_atom (Font_metric const * met, SCM f)
 {
   if (f == SCM_EOL)
     return f;
index dcb596a117071a3d8fe78610b3c8992e0635a25c..a6d2a721a44c6b8cc7a95a22bcea03c5ae16692f 100644 (file)
 #include "simple-music-iterator.hh"
 #include "context-specced-music.hh"
 
+#include "ly-smobs.icc"
+
 Music_iterator::Music_iterator ()
 {
+  music_ = 0;
+  smobify_self ();
 }
 
 Music_iterator::Music_iterator (Music_iterator const& src)
@@ -27,22 +31,19 @@ Music_iterator::Music_iterator (Music_iterator const& src)
   music_ = src.music_;
   music_length_ = src.music_length_;
   start_mom_ = src.start_mom_;
+  smobify_self ();
 }
 
 Music_iterator::~Music_iterator ()
 {
 }
 
-
-
-
 Translator_group* 
 Music_iterator::report_to () const
 {
   return handle_.report_to ();
 }
 
-
 void
 Music_iterator::set_translator (Translator_group *trans)
 {
@@ -82,30 +83,34 @@ Music_iterator::get_pending_events (Moment)const
   return SCM_EOL;
 }
 
-Music_iterator*
+SCM
 Music_iterator::get_static_get_iterator (Music *m)
 {
   Music_iterator * p =0;
 
   SCM ctor = m->get_mus_property ("iterator-ctor") ;
-  if (unsmob_cxx_function (ctor))
+  SCM iter = SCM_EOL;
+  if (gh_procedure_p (ctor))
     {
-      Cxx_function f =  unsmob_cxx_function (ctor);
-      
-      p = (Music_iterator*) (*f) (SCM_EOL);
+      iter = gh_call0 (ctor);
+      p = unsmob_iterator (iter);
     }
-  else if (dynamic_cast<Music_wrapper   *> (m))
-    p = new Music_wrapper_iterator;
   else
     {
-      p = new Simple_music_iterator ;
+      if (dynamic_cast<Music_wrapper *> (m))
+       p = new Music_wrapper_iterator;
+      else
+       p = new Simple_music_iterator;
+
+      iter = p->self_scm();
+      scm_gc_unprotect_object (iter);
     }
 
   p->music_ = m;
   assert (m);
   p->music_length_ = m->length_mom ();
   p->start_mom_ = m->start_mom ();
-  return p;
+  return iter;
 }
 
 
@@ -113,7 +118,6 @@ Moment
 Music_iterator::music_length_mom () const
 {
   return music_length_;
-
 }
 
 Moment
@@ -151,14 +155,16 @@ Music_iterator::init_translator (Music *m, Translator_group *report)
 }
 
 
-Music_iterator*
+SCM
 Music_iterator::get_iterator (Music *m) const
 {
-  Music_iterator*p = get_static_get_iterator (m);
+  SCM ip = get_static_get_iterator (m);
+  Music_iterator*p = unsmob_iterator (ip);
+  
   p->init_translator (m, report_to ());
   
   p->construct_children ();
-  return p;
+  return ip;
 }
 
 /*
@@ -166,7 +172,6 @@ Music_iterator::get_iterator (Music *m) const
   Iterator::try_music
   
  */
-
 Music_iterator*
 Music_iterator::try_music (Music *m) const
 {
@@ -190,3 +195,52 @@ Music_iterator::get_music () const
 {
   return music_;
 }
+
+/****************************************************************/
+
+IMPLEMENT_TYPE_P (Music_iterator, "ly-iterator?");
+IMPLEMENT_SMOBS(Music_iterator);
+IMPLEMENT_DEFAULT_EQUAL_P(Music_iterator);
+
+SCM
+Music_iterator::mark_smob (SCM smob)
+{
+  Music_iterator * mus = (Music_iterator *)SCM_CELL_WORD_1 (smob);
+
+  mus->derived_mark ();
+  /*
+    Careful with GC, although we intend the following as pointers
+    only, we _must_ mark them.
+   */
+  if (mus->report_to())
+    scm_gc_mark (mus->report_to()->self_scm());
+  if (mus->music_)
+    scm_gc_mark (mus->music_->self_scm());
+  
+
+  return SCM_EOL;
+}
+
+int
+Music_iterator::print_smob (SCM , SCM port, scm_print_state*)
+{
+  scm_puts ("#<Music iterator>", port);
+  return 1;
+}
+
+void
+Music_iterator::derived_mark()const
+{
+}
+
+void
+Music_iterator::quit ()
+{
+  do_quit ();
+  handle_.quit ();
+}
+
+void
+Music_iterator::do_quit()
+{
+}
index 4980c9344ff0322ba5249a3bae641bf8431d074c..7798d65eaf001651ccd59417df16d1ed148008e8 100644 (file)
@@ -18,23 +18,30 @@ Music_wrapper_iterator::Music_wrapper_iterator ()
 Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src)
   : Music_iterator (src)
 {
-  if (src.child_iter_)
-    child_iter_ = src.child_iter_->clone ();
-  else
-    child_iter_ = 0;
+  child_iter_ = (src.child_iter_) ? src.child_iter_->clone () : 0;
+  if (child_iter_)
+    scm_gc_unprotect_object (child_iter_->self_scm());
 }
 
-Music_wrapper_iterator::~Music_wrapper_iterator ()
+void
+Music_wrapper_iterator::do_quit()
+{
+  child_iter_->quit();
+}
+
+void
+Music_wrapper_iterator::derived_mark()const
 {
-  delete child_iter_;
+  if (child_iter_)
+    scm_gc_mark (child_iter_->self_scm());
 }
 
 
 void
 Music_wrapper_iterator::construct_children ()
 {
-  child_iter_ =
-    get_iterator (dynamic_cast<Music_wrapper const*> (get_music ())->element ());
+  Music * m =  dynamic_cast<Music_wrapper const*> (get_music ())-> element();  
+  child_iter_ = unsmob_iterator (get_iterator (m));
 }
 
 bool
index 4eb6a68514659e2e54fbb36d12cc4272011b7ecb..40d913266a9ae8551d1cccec448801a6d663866e 100644 (file)
@@ -34,6 +34,7 @@ ly_deep_mus_copy (SCM m)
 
 Music::Music ()
 {
+  self_scm_ = SCM_EOL; 
   immutable_property_alist_ = SCM_EOL;
   mutable_property_alist_ = SCM_EOL;
   smobify_self ();
@@ -43,6 +44,7 @@ Music::Music (Music const &m)
 {
   immutable_property_alist_ = m.immutable_property_alist_;
   mutable_property_alist_ = SCM_EOL;
+  self_scm_ = SCM_EOL;
 
   /*
     First we smobify_self, then we copy over the stuff.  If we don't,
@@ -57,6 +59,7 @@ Music::Music (Music const &m)
 
 Music::Music (SCM l)
 {
+  self_scm_ = SCM_EOL;
   immutable_property_alist_ = l;
   mutable_property_alist_ = SCM_EOL;
   smobify_self ();
index ac24a4c9172f6e55a23e63854770088fe406bcfc..c4a58d0ed206c40fc26b42302826992738288948 100644 (file)
@@ -85,6 +85,15 @@ Text_script_req::do_equal_b (Request const* r) const
                          t->get_mus_property ("text"));
 }
 
+bool
+String_number_req::do_equal_b (Request const* r) const
+{
+  String_number_req const* s  = dynamic_cast<String_number_req const*> (r);
+  return s && gh_equal_p (get_mus_property ("string"),
+                         s->get_mus_property ("string"));
+}
+
+
 bool
 Articulation_req::do_equal_b (Request const* r) const
 {
@@ -95,5 +104,4 @@ Articulation_req::do_equal_b (Request const* r) const
     && get_direction () == a->get_direction ();
 }
 
-
-
+ADD_MUSIC(String_number_req);
index cff5ae13e698f155b5d202334d2d4ba70eb61390..48005225d18c895bc4f3bf781d24df77ab1a55cb 100644 (file)
@@ -58,6 +58,7 @@ static Keyword_ent the_key_tab[]={
   {"lyrics", LYRICS},
   {"key", KEY},
   {"mark", MARK},
+  {"once", ONCE},
   {"pitch", PITCH},
   {"time", TIME_T},
   {"times", TIMES},
index 4b2596c298f19376dcf4b35d74e51fa5a44cb3d9..16c58ebaea15aa1137b235a6ea3dc07e50862290 100644 (file)
@@ -103,7 +103,7 @@ Note_head::brew_ledger_lines (Grob *me,
 }
 
 Molecule
-internal_brew_molecule (Grob *me,  bool ledger_take_space)
+internal_brew_molecule (Grob *me, bool ledger_take_space)
 {
   SCM style  = me->get_grob_property ("style");
   if (!gh_symbol_p (style))
@@ -120,20 +120,16 @@ internal_brew_molecule (Grob *me,  bool ledger_take_space)
   SCM exp = scm_list_n (ly_symbol2scm ("find-notehead-symbol"), log,
                        ly_quote_scm (style),
                        SCM_UNDEFINED);
-  SCM scm_pair = scm_primitive_eval (exp);
-  SCM scm_font_char = ly_car (scm_pair);
-  SCM scm_font_family = ly_cdr (scm_pair);
+  SCM scm_font_char = scm_primitive_eval (exp);
   String font_char = "noteheads-" + ly_scm2string (scm_font_char);
-  String font_family = ly_scm2string (scm_font_family);
-  
-   me->set_grob_property("font-family", ly_symbol2scm (font_family.to_str0 ()));
-   Molecule out =
-     Font_interface::get_default_font (me)->find_by_name (font_char);
-   if (out.empty_b())
-     {
-       warning (_f("Symbol not found, ", font_char.to_str0()));
+
+  Font_metric * fm = Font_interface::get_default_font (me);
+  Molecule out = fm->find_by_name (font_char);
+  if (out.empty_b())
+    {
+      me->warning (_f ("note head `%s' not found", font_char.to_str0 ()));
     }
-  
+
   int interspaces = Staff_symbol_referencer::line_count (me)-1;
   int pos = (int)rint (Staff_symbol_referencer::get_position (me));
   if (abs (pos) - interspaces > 1)
@@ -254,7 +250,6 @@ Note_head::stem_attachment_coordinate (Grob *me, Axis a)
   return gh_number_p (result) ?  gh_scm2double (result) : 0.0;
 }
 
-
 int
 Note_head::get_balltype (Grob*me) 
 {
index e7256e8bbe038858ffbb6bdb2269fe9fb4e4b5cc..7964a2966e0885e25739209655da14047de8df80 100644 (file)
@@ -66,6 +66,10 @@ Note_spacing::get_spacing (Grob *me, Item* right_col,
              if (!g)
                g =  Note_column::first_head (it);
 
+             /*
+               Ugh. If Stem is switched off, we don't know what the
+               first note head will be.
+              */
              if (g)
                left_head_wid = g->extent(it_col, X_AXIS);
            }
@@ -102,7 +106,8 @@ Note_spacing::get_spacing (Grob *me, Item* right_col,
   */
   *fixed = left_head_wid.empty_b () ? increment : left_head_wid[RIGHT];
   *space = (base_space - increment) + *fixed +
-    (extents[LEFT][RIGHT] - left_head_wid[RIGHT])/ 2;
+    (extents[LEFT][RIGHT]
+     - (left_head_wid.empty_b () ? 0.0 : left_head_wid[RIGHT]))/ 2;
     ;
 
   if (*space - *fixed < 2 * ((- extents[RIGHT][LEFT]) >? 0))
@@ -233,7 +238,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
          
          Grob *stem = Note_column::get_stem (it);
 
-         if (!stem)
+         if (!stem || !stem->live ())
            {
              if (d == RIGHT && Separation_item::has_interface (it))
                {
index 2c494b8317242d98b5416a24bc2017771492942b..17b025423c3a73d8837ae2c7eec2d320b1733c5c 100644 (file)
@@ -40,7 +40,7 @@ bool
 Output_property_engraver::try_music (Music* m)
 {
   if (m->get_mus_property ("iterator-ctor") ==
-      Output_property_music_iterator::constructor_cxx_function)
+      Output_property_music_iterator::constructor_proc)
     {
       props_.push (m);
       return true;
index e00444cf5d6ae51224368376e917b53ae6c7f187..f6bf6ec19bd404f485e5b6200aed8ed5981942b8 100644 (file)
@@ -6,8 +6,10 @@
   (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+
 #include <math.h>
 
+#include "virtual-font-metric.hh"
 #include "all-font-metrics.hh"
 #include "string.hh"
 #include "misc.hh"
@@ -133,6 +135,8 @@ Paper_def::get_paper_outputter ()
 
 /*
   todo: use symbols and hashtable idx?
+
+
 */
 Font_metric *
 Paper_def::find_font (SCM fn, Real m)
@@ -143,19 +147,31 @@ Paper_def::find_font (SCM fn, Real m)
   if (gh_pair_p (met))
     return unsmob_metrics (ly_cdr (met));
 
-  SCM ssc;
-  if (variable_tab_->try_retrieve (ly_symbol2scm ("outputscale"), &ssc))
+  /*
+    Hmm. We're chaining font - metrics. Should consider wether to merge
+    virtual-font and scaled_font.
+   */
+  Font_metric*  f=0;
+  if (gh_list_p (fn))
     {
-      m /= gh_scm2double (ssc);
+      f = new Virtual_font_metric (fn, m, this);
+    }
+  else
+    {
+      SCM ssc;
+      if (variable_tab_->try_retrieve (ly_symbol2scm ("outputscale"), &ssc))
+       {
+         m /= gh_scm2double (ssc);
+       }
+
+      f = all_fonts_global->find_font (ly_scm2string (fn));
+      SCM val = Scaled_font_metric::make_scaled_font_metric (f, m);
+      scaled_fonts_ = scm_acons (key, val, scaled_fonts_);
+      f = unsmob_metrics (val);
+      scm_gc_unprotect_object (val);
     }
-  
-  Font_metric*  f = all_fonts_global->find_font (ly_scm2string (fn));
-  SCM val = Scaled_font_metric::make_scaled_font_metric (f, m);
-  scaled_fonts_ = scm_acons (key, val, scaled_fonts_);
-
-  scm_gc_unprotect_object (val);
 
-  return dynamic_cast<Scaled_font_metric*> (unsmob_metrics (val));
+  return f;
 }
 
 
index 73ad657154eb22d02f72af93544190a8a4a38db1..99ff6633534efbb7039a2bc11f6ff13e91075011 100644 (file)
@@ -23,6 +23,7 @@ this.
 
 */
 
+#include <iostream.h>
 #include <ctype.h>
 
 #include "translator-def.hh"
@@ -82,7 +83,7 @@ set_property_music (SCM sym, SCM value)
        Music * p = new Music (SCM_EOL);
        p->set_mus_property ("symbol", sym);
        p->set_mus_property ("iterator-ctor",
-       Property_iterator::constructor_cxx_function);
+       Property_iterator::constructor_proc);
 
        p->set_mus_property ("value", value);
        return p;
@@ -111,7 +112,7 @@ set_music_properties (Music *p, SCM a)
 
 // needed for bison.simple's malloc () and free ()
 
-#include <malloc.h>
+// #include <malloc.h>
 #include <stdlib.h>
 
 
@@ -209,6 +210,7 @@ yylex (YYSTYPE *s,  void * v)
 %token NAME
 %token PITCHNAMES
 %token NOTES
+%token ONCE
 %token PAPER
 %token PARTIAL
 %token PENALTY
@@ -242,10 +244,10 @@ yylex (YYSTYPE *s,  void * v)
 %token E_CHAR E_EXCLAMATION E_SMALLER E_BIGGER E_OPEN E_CLOSE
 %token E_LEFTSQUARE E_RIGHTSQUARE E_TILDE
 %token E_BACKSLASH
-%token CHORD_BASS CHORD_COLON CHORD_MINUS CHORD_CARET
+%token <i> E_UNSIGNED
+%token CHORD_BASS CHORD_COLON CHORD_MINUS CHORD_CARET  CHORD_SLASH
 %token FIGURE_SPACE
 
-
 %type <i>      exclamations questions dots optional_rest
 %type <i>      bass_number bass_mod
 %type <scm>    br_bass_figure bass_figure figure_list figure_spec
@@ -282,7 +284,6 @@ yylex (YYSTYPE *s,  void * v)
 %type <i>      tremolo_type
 %type <i>      bare_int  bare_unsigned
 %type <i>      script_dir
-
 %type <scm>    identifier_init 
 
 %type <scm> steno_duration optional_notemode_duration multiplied_duration
@@ -301,7 +302,7 @@ yylex (YYSTYPE *s,  void * v)
 %type <scm>  embedded_scm scalar
 %type <music>  Music Sequential_music Simultaneous_music 
 %type <music>  relative_music re_rhythmed_music part_combined_music
-%type <music>  property_def translator_change
+%type <music>  property_def translator_change  simple_property_def
 %type <scm> Music_list
 %type <outputdef>  music_output_def_body
 %type <request> shorthand_command_req
@@ -309,6 +310,7 @@ yylex (YYSTYPE *s,  void * v)
 %type <music> command_req verbose_command_req
 %type <request>        extender_req
 %type <request> hyphen_req
+%type <request> string_request
 %type <scm>    string bare_number number_expression number_term number_factor 
 
 %type <score>  score_block score_body
@@ -523,7 +525,7 @@ translator_spec_body:
        }
        | translator_spec_body ALIAS STRING  {
                Translator_def*td = unsmob_translator_def ($$);
-               td->type_aliases_ = gh_cons ($3, td->type_aliases_);
+               td->type_aliases_ = scm_cons ($3, td->type_aliases_);
        }
        | translator_spec_body GROBDESCRIPTIONS embedded_scm {
                Translator_def*td = unsmob_translator_def($$);
@@ -686,11 +688,11 @@ The representation of a  list is the
  to have  efficient append.
 */
 Music_list: /* empty */ {
-               $$ = gh_cons (SCM_EOL, SCM_EOL);
+               $$ = scm_cons (SCM_EOL, SCM_EOL);
        }
        | Music_list Music {
                SCM s = $$;
-               SCM c = gh_cons ($2->self_scm (), SCM_EOL);
+               SCM c = scm_cons ($2->self_scm (), SCM_EOL);
                scm_gc_unprotect_object ($2->self_scm ()); /* UGH */
                if (gh_pair_p (ly_cdr (s)))
                        gh_set_cdr_x (ly_cdr (s), c); /* append */
@@ -747,11 +749,12 @@ Repeated_music:
                /*
                we can not get durations and other stuff correct down the line, so we have to
                add to the duration log here.
-
-               TODO: do dots.
                */
                        SCM func = scm_primitive_eval (ly_symbol2scm ("shift-duration-log"));
-                       gh_call2 (func, r->self_scm (), gh_int2scm(-intlog2 ($3)));
+                       if (($3 % 3) == 0)
+                         gh_call3 (func, r->self_scm (), gh_int2scm(-intlog2 ($3*2/3)),gh_int2scm(1));
+                       else
+                         gh_call3 (func, r->self_scm (), gh_int2scm(-intlog2 ($3)), gh_int2scm(0));
                }
 
                set_music_properties (r, result);
@@ -808,7 +811,7 @@ Simple_music:
                m->set_mus_property ("grob-property", $3);
                m->set_mus_property ("grob-value",  $5);
                m->set_mus_property ("iterator-ctor",
-               Output_property_music_iterator::constructor_cxx_function);
+               Output_property_music_iterator::constructor_proc);
 
                $$ = m;
        }
@@ -836,7 +839,7 @@ Composite_music:
        | AUTOCHANGE STRING Music       {
                Music * chm = new Music_wrapper (SCM_EOL);
                chm->set_mus_property ("element", $3->self_scm ());
-               chm->set_mus_property ("iterator-ctor", Auto_change_iterator::constructor_cxx_function);
+               chm->set_mus_property ("iterator-ctor", Auto_change_iterator::constructor_proc);
 
                scm_gc_unprotect_object ($3->self_scm ());
                chm->set_mus_property ("what", $2); 
@@ -859,14 +862,14 @@ Composite_music:
                SCM ms = SCM_EOL;
                if (stopm) {
                        stopm = stopm->clone ();
-                       ms = gh_cons (stopm->self_scm (), ms);
+                       ms = scm_cons (stopm->self_scm (), ms);
                        scm_gc_unprotect_object (stopm->self_scm ());
                }
-               ms = gh_cons ($2->self_scm (), ms);
+               ms = scm_cons ($2->self_scm (), ms);
                scm_gc_unprotect_object ($2->self_scm());
                if (startm) {
                        startm = startm->clone ();
-                       ms = gh_cons (startm->self_scm () , ms);
+                       ms = scm_cons (startm->self_scm () , ms);
                        scm_gc_unprotect_object (startm->self_scm ());
                }
 
@@ -1025,7 +1028,7 @@ translator_change:
        TRANSLATOR STRING '=' STRING  {
                Music * t = new Music (SCM_EOL);
                t->set_mus_property ("iterator-ctor",
-                       Change_iterator::constructor_cxx_function);
+                       Change_iterator::constructor_proc);
                t-> set_mus_property ("change-to-type", $2);
                t-> set_mus_property ("change-to-id", $4);
 
@@ -1035,6 +1038,15 @@ translator_change:
        ;
 
 property_def:
+       simple_property_def
+       | ONCE simple_property_def {
+               $$ = $2;
+               SCM e = $2->get_mus_property ("element");
+               unsmob_music (e)->set_mus_property ("once", SCM_BOOL_T);
+       }
+       ;
+
+simple_property_def:
        PROPERTY STRING '.' STRING '='  scalar {
                
                Music *t = set_property_music (scm_string_to_symbol ($4), $6);
@@ -1052,7 +1064,7 @@ property_def:
                Music *t = new Music (SCM_EOL);
 
                t->set_mus_property ("iterator-ctor",
-                       Property_unset_iterator::constructor_cxx_function);
+                       Property_unset_iterator::constructor_proc);
                t->set_mus_property ("symbol", scm_string_to_symbol ($4));
 
                Context_specced_music *csm = new Context_specced_music (SCM_EOL);
@@ -1070,7 +1082,7 @@ property_def:
                bool itc = internal_type_checking_global_b;
                Music *t = new Music (SCM_EOL);
                t->set_mus_property ("iterator-ctor",
-                       Push_property_iterator::constructor_cxx_function);
+                       Push_property_iterator::constructor_proc);
                t->set_mus_property ("symbol", scm_string_to_symbol ($4));
                t->set_mus_property ("pop-first", SCM_BOOL_T);
                if (autobeam)
@@ -1087,7 +1099,9 @@ property_def:
 
                csm-> set_mus_property ("context-type", $2);
        }
-       | PROPERTY STRING '.' STRING OVERRIDE embedded_scm '=' embedded_scm {
+       | PROPERTY STRING '.' STRING OVERRIDE
+               embedded_scm '=' embedded_scm
+       {
                /*
                        UGH UGH UGH UGH.
                */
@@ -1097,7 +1111,7 @@ property_def:
 
                Music *t = new Music (SCM_EOL);
                t->set_mus_property ("iterator-ctor",
-                       Push_property_iterator::constructor_cxx_function);
+                       Push_property_iterator::constructor_proc);
                t->set_mus_property ("symbol", scm_string_to_symbol ($4));
 
                if (autobeam)
@@ -1115,6 +1129,7 @@ property_def:
                $$->set_spot (THIS->here_input ());
 
                csm-> set_mus_property ("context-type", $2);
+
        }
        | PROPERTY STRING '.' STRING REVERT embedded_scm {
                Music *t = new Music (SCM_EOL);
@@ -1123,7 +1138,7 @@ property_def:
                bool itc = internal_type_checking_global_b;
 
                t->set_mus_property ("iterator-ctor",
-                       Pop_property_iterator::constructor_cxx_function);
+                       Pop_property_iterator::constructor_proc);
                t->set_mus_property ("symbol", scm_string_to_symbol ($4));
                if (autobeam)
                        internal_type_checking_global_b = false;
@@ -1172,7 +1187,7 @@ request_chord:
 command_element:
        command_req {
                $$ = new Request_chord (SCM_EOL);
-               $$->set_mus_property ("elements", gh_cons ($1->self_scm (), SCM_EOL));
+               $$->set_mus_property ("elements", scm_cons ($1->self_scm (), SCM_EOL));
          scm_gc_unprotect_object ($1->self_scm());
 
                $$-> set_spot (THIS->here_input ());
@@ -1185,7 +1200,7 @@ command_element:
                l->set_spot (THIS->here_input ());
 
                $$ = new Request_chord (SCM_EOL);
-               $$->set_mus_property ("elements", gh_cons (l->self_scm (), SCM_EOL));
+               $$->set_mus_property ("elements", scm_cons (l->self_scm (), SCM_EOL));
          scm_gc_unprotect_object (l->self_scm());
                $$->set_spot (THIS->here_input ());
        }
@@ -1196,13 +1211,13 @@ command_element:
                l->set_spot (THIS->here_input ());
 
                $$ = new Request_chord (SCM_EOL);
-               $$->set_mus_property ("elements", gh_cons (l->self_scm (), SCM_EOL));
+               $$->set_mus_property ("elements", scm_cons (l->self_scm (), SCM_EOL));
                $$->set_spot (THIS->here_input ());
          scm_gc_unprotect_object (l->self_scm());
 
        }
        | E_BACKSLASH {
-               $$ = new Music (gh_list (gh_cons (ly_symbol2scm ("name"), ly_symbol2scm ("separator")), SCM_UNDEFINED));
+               $$ = new Music (gh_list (scm_cons (ly_symbol2scm ("name"), ly_symbol2scm ("separator")), SCM_UNDEFINED));
                $$->set_spot (THIS->here_input ());
        }
        | '|'      {
@@ -1221,7 +1236,7 @@ command_element:
                $$ = csm;
                $$->set_spot (THIS->here_input ());
 
-               csm->set_mus_property ("context-type", scm_makfrom0str ("Score"));
+               csm->set_mus_property ("context-type", scm_makfrom0str ("Timing"));
        }
        | PARTIAL duration_length       {
                Moment m = - unsmob_duration ($2)->length_mom ();
@@ -1232,7 +1247,7 @@ command_element:
                scm_gc_unprotect_object (p->self_scm ());
 
                $$ =sp ;
-               sp-> set_mus_property ("context-type", scm_makfrom0str ( "Score"));
+               sp-> set_mus_property ("context-type", scm_makfrom0str ("Timing"));
        }
        | CLEF STRING  {
                SCM func = scm_primitive_eval (ly_symbol2scm ("clef-name-to-properties"));
@@ -1242,7 +1257,7 @@ command_element:
                for (SCM s = result ; gh_pair_p (s); s = ly_cdr (s)) {
                        Music * p = new Music (SCM_EOL);
                        set_music_properties (p, ly_car (s));
-                       l = gh_cons (p->self_scm (), l);
+                       l = scm_cons (p->self_scm (), l);
                        scm_gc_unprotect_object (p->self_scm ());
                }
                Sequential_music * seq = new Sequential_music (SCM_EOL);
@@ -1276,8 +1291,6 @@ command_element:
                Context_specced_music * sp = new Context_specced_music (SCM_EOL);
                sp->set_mus_property ("element", seq->self_scm ());
 
-               
-
                scm_gc_unprotect_object (p3->self_scm ());
                scm_gc_unprotect_object (p2->self_scm ());
                scm_gc_unprotect_object (p1->self_scm ());
@@ -1285,11 +1298,7 @@ command_element:
 
                $$ = sp;
 
-/*
- TODO: should make alias TimingContext for Score
-*/
-
-               sp-> set_mus_property ("context-type", scm_makfrom0str ( "Score"));
+               sp-> set_mus_property ("context-type", scm_makfrom0str ( "Timing"));
        }
        ;
 
@@ -1394,6 +1403,17 @@ post_request:
        verbose_request
        | request_with_dir
        | close_request
+       | string_request
+       ;
+
+
+string_request:
+       E_UNSIGNED {
+               String_number_req* s = new String_number_req;
+               s->set_mus_property ("string-number",  gh_int2scm($1));
+               s->set_spot (THIS->here_input ());
+               $$ = s;
+       }
        ;
 
 
@@ -1773,7 +1793,7 @@ multiplied_duration:
 fraction:
        FRACTION { $$ = $1; }
        | UNSIGNED '/' UNSIGNED {
-               $$ = gh_cons (gh_int2scm ($1), gh_int2scm ($3));
+               $$ = scm_cons (gh_int2scm ($1), gh_int2scm ($3));
        }
        ;
 
@@ -1856,7 +1876,7 @@ figure_list:
                $$ = SCM_EOL;
        }
        | figure_list br_bass_figure {
-               $$ = gh_cons ($2, $1); 
+               $$ = scm_cons ($2, $1); 
        }
        ;
 
@@ -2023,7 +2043,7 @@ chord_inversion:
        {
                $$ = SCM_EOL;
        }
-       | '/' steno_tonic_pitch {
+       | CHORD_SLASH steno_tonic_pitch {
                $$ = $2;
        }
        ;
@@ -2039,10 +2059,10 @@ chord_bass:
 
 chord_step:
        chord_note {
-               $$ = gh_cons ($1, SCM_EOL);
+               $$ = scm_cons ($1, SCM_EOL);
        }
        | CHORDMODIFIER_PITCH {
-               $$ = gh_cons (unsmob_pitch ($1)->smobbed_copy (), SCM_EOL);
+               $$ = scm_cons (unsmob_pitch ($1)->smobbed_copy (), SCM_EOL);
        }
        | CHORDMODIFIER_PITCH chord_note { /* Ugh. */
                $$ = scm_list_n (unsmob_pitch ($1)->smobbed_copy (),
index 7a871bc815a26035d39eefeac5c344405d65a513..11a0a75bff81af93b5212ab183a13e0b8df09290 100644 (file)
@@ -20,24 +20,43 @@ Part_combine_music_iterator::Part_combine_music_iterator ()
   second_iter_ = 0;
   first_until_ = 0;
   second_until_ = 0;
+
+  state_ = 0;
+}
+
+void
+Part_combine_music_iterator::derived_mark () const
+{
+  if (first_iter_)
+    scm_gc_mark (first_iter_->self_scm());
+  if (second_iter_)
+    scm_gc_mark(second_iter_->self_scm());
 }
 
-Part_combine_music_iterator::~Part_combine_music_iterator ()
+void
+Part_combine_music_iterator::do_quit ()
 {
-  delete second_iter_;
-  delete first_iter_;
+  if (first_iter_)
+    first_iter_->quit();
+  if (second_iter_)
+    second_iter_->quit();
 }
 
 Part_combine_music_iterator::Part_combine_music_iterator (Part_combine_music_iterator const &src)
   : Music_iterator (src)
 {
-  second_iter_ = src.second_iter_ ? src.second_iter_->clone () : 0;
   first_iter_ = src.first_iter_ ? src.first_iter_->clone () : 0;
+  second_iter_ = src.second_iter_ ? src.second_iter_->clone () : 0;
 
   first_until_ = src.first_until_;
   second_until_ = src.second_until_;
   state_ = src.state_;
   suffix_ = src.suffix_;
+
+  if (first_iter_)
+    scm_gc_unprotect_object (first_iter_->self_scm());
+  if (second_iter_)
+    scm_gc_unprotect_object (second_iter_->self_scm());
 }
 
 Moment
@@ -64,8 +83,8 @@ Part_combine_music_iterator::construct_children ()
 {
   Part_combine_music const * m = dynamic_cast<Part_combine_music const*> (get_music ());
   
-  first_iter_ = get_iterator (m->get_first ());
-  second_iter_ = get_iterator (m->get_second ());
+  first_iter_ = unsmob_iterator (get_iterator (m->get_first ()));
+  second_iter_ = unsmob_iterator (get_iterator (m->get_second ()));
 }
 
 void
@@ -176,10 +195,11 @@ Part_combine_music_iterator::get_state (Moment)
       Moment second_mom = second_until_;
       Moment diff_until = diff_mom + now;
 
+
       bool first = true;
       Music_iterator *first_iter = first_iter_->clone ();
       Music_iterator *second_iter = second_iter_->clone ();
-
+      
       Moment last_pending (-1);
       Moment pending = now;
       while (now < diff_until
@@ -311,9 +331,10 @@ Part_combine_music_iterator::get_state (Moment)
            second_iter->skip (pending);
          now = pending;
        }
-      delete first_iter;
-      delete second_iter;
+      scm_gc_unprotect_object (first_iter->self_scm ());
+      scm_gc_unprotect_object (second_iter->self_scm ());
     }
+
   return state;
 }
 
@@ -331,7 +352,7 @@ Part_combine_music_iterator::process (Moment m)
 
       **** Tried this, but won't work:
 
-      Consider thread switching: threads "one", "two" and "both".
+s      Consider thread switching: threads "one", "two" and "both".
       User can't pre-set the (most important) stem direction at
       thread level!
    */
index 7ab0a6f95a8db99b7ed0cef04272bf51aa0a28ef..da76cf1e941b84a20ec82f5121d19e3651cd42dc 100644 (file)
@@ -15,7 +15,7 @@ Part_combine_music::Part_combine_music (SCM l)
   : Music (l)
 {
   set_mus_property ("iterator-ctor",
-                   Part_combine_music_iterator::constructor_cxx_function);
+                   Part_combine_music_iterator::constructor_proc);
 }
 
 void
index 74c87e873bd6a5c9e125b56e29631b76ac585f2d..70f12528794343487c4538574fc815e861e7576a 100644 (file)
@@ -85,7 +85,7 @@ Percent_repeat_engraver::try_music (Music * m)
   Repeated_music * rp = dynamic_cast<Repeated_music*> (m);
   if (rp
       && rp->get_mus_property ("iterator-ctor")
-         == Percent_repeat_iterator::constructor_cxx_function
+         == Percent_repeat_iterator::constructor_proc
       && !repeat_)
     {
       body_length_ = rp->body_length_mom ();
index 3bce52030a378bdcc88e23b230561664591fc502..cc9c112ad8cbd150cf4e6d781e42617241d1fbe8 100644 (file)
@@ -16,14 +16,24 @@ IMPLEMENT_CTOR_CALLBACK (Percent_repeat_iterator);
 
 Percent_repeat_iterator::Percent_repeat_iterator ()
 {
+  child_iter_ = 0;
   
 }
 
+void
+Percent_repeat_iterator::do_quit()
+{
+  if (child_iter_)
+    child_iter_->quit();
+}
 Percent_repeat_iterator::Percent_repeat_iterator (Percent_repeat_iterator const & p)
   : Music_iterator (p)
 {
   child_iter_ = p.child_iter_ ? p.child_iter_->clone (): 0;
   finish_mom_ = p.finish_mom_ ;
+
+  if(child_iter_)
+    scm_gc_unprotect_object (child_iter_->self_scm());
 }
 
 bool
@@ -37,7 +47,7 @@ Percent_repeat_iterator::construct_children ()
 {
   Repeated_music * mus =dynamic_cast<Repeated_music *> (get_music ());
   finish_mom_ = mus->length_mom ();
-  child_iter_ = get_iterator (mus->body ());
+  child_iter_ = unsmob_iterator (get_iterator (mus->body ()));
 }
 
 
@@ -58,7 +68,7 @@ Percent_repeat_iterator::process (Moment m)
 
   if (finish_mom_ <= m )
     {
-      delete child_iter_;
+      child_iter_->quit(); 
       child_iter_ = 0;
     }
 }
@@ -78,8 +88,9 @@ Percent_repeat_iterator::try_music_in_children (Music *m) const
   return child_iter_->try_music (m);
 }
 
-
-Percent_repeat_iterator::~Percent_repeat_iterator ()
+void
+Percent_repeat_iterator::derived_mark()const
 {
-  delete child_iter_;
+  if (child_iter_)
+    scm_gc_mark (child_iter_->self_scm());
 }
index 480b506858d7fe62b885c1cf14861351a42ec91c..34f46db21a738d12a4b194f73b197ca815e7049c 100644 (file)
@@ -10,6 +10,7 @@
 #include "music.hh"
 #include "translator-def.hh"
 #include "translator-group.hh"
+#include "global-translator.hh"
 
 
 bool check_grob(Music *mus, SCM sym);
@@ -44,6 +45,34 @@ Property_unset_iterator::process (Moment m)
   Simple_music_iterator::process (m);
 }
 
+MAKE_SCHEME_CALLBACK(Property_iterator,once_finalization, 2);
+SCM
+Property_iterator::once_finalization(SCM translator, SCM music )
+{
+  Music * m = unsmob_music (music);
+  Translator_group * tg
+    = dynamic_cast<Translator_group*> (unsmob_translator (translator));
+  SCM sym = m->get_mus_property ("symbol");
+
+  tg->unset_property (sym);
+  return SCM_UNSPECIFIED;
+}
+
+void
+Property_iterator::do_quit ()
+{
+  if (to_boolean (get_music ()->get_mus_property  ("once")))
+    {
+      SCM trans = report_to()->self_scm();
+      SCM music = get_music()->self_scm();
+
+      Global_translator * tg=  report_to()->top_translator ();
+
+      tg->add_finalization (scm_list_n (once_finalization_proc,
+                                       trans, music, SCM_UNDEFINED));
+    }
+}
+
 
 SCM list_p = 0;
 
@@ -75,7 +104,9 @@ Push_property_iterator::process (Moment m)
       SCM eprop = get_music ()->get_mus_property ("grob-property");
       SCM val = get_music ()->get_mus_property ("grob-value");
 
-      if (to_boolean (get_music ()->get_mus_property ("pop-first")))
+      if (to_boolean (get_music ()->get_mus_property ("pop-first"))
+         && !to_boolean (get_music ()->get_mus_property ("once"))
+         )
        Translator_def::apply_pushpop_property (report_to (),
                                                sym, eprop, SCM_UNDEFINED);
 
@@ -84,6 +115,38 @@ Push_property_iterator::process (Moment m)
   Simple_music_iterator::process (m);
 }
 
+MAKE_SCHEME_CALLBACK(Push_property_iterator,once_finalization, 2);
+SCM
+Push_property_iterator::once_finalization (SCM trans, SCM music)
+{
+  Music * mus = unsmob_music (music);
+  Translator_group *tg
+    = dynamic_cast<Translator_group*> (unsmob_translator (trans));
+
+  SCM sym = mus->get_mus_property ("symbol");
+  if (check_grob (mus, sym))
+    {
+      SCM eprop = mus->get_mus_property ("grob-property");
+  
+      Translator_def::apply_pushpop_property (tg, sym, eprop, SCM_UNDEFINED);
+    }
+  return SCM_UNSPECIFIED;
+}
+
+void
+Push_property_iterator::do_quit ()
+{
+  if (to_boolean (get_music ()->get_mus_property  ("once")))
+    {
+      SCM trans = report_to()->self_scm();
+      SCM music = get_music ()->self_scm();
+
+      Global_translator * tg=  report_to()->top_translator ();
+      tg->add_finalization (scm_list_n (once_finalization_proc,
+                                       trans, music, SCM_UNDEFINED));
+    }
+}
+
 void
 Pop_property_iterator::process (Moment m)
 {
@@ -97,7 +160,9 @@ Pop_property_iterator::process (Moment m)
 }
 
 
+
 IMPLEMENT_CTOR_CALLBACK (Pop_property_iterator);
 IMPLEMENT_CTOR_CALLBACK (Push_property_iterator);
 IMPLEMENT_CTOR_CALLBACK (Property_iterator);
 IMPLEMENT_CTOR_CALLBACK (Property_unset_iterator);
+
index 322cf49e03ea563cd22ae24836d46b667b6b5244..3de20f4b4f92535ef6d651ae9ef8bb81e92c9905 100644 (file)
@@ -7,13 +7,13 @@ Request_chord::Request_chord (SCM s)
   : Simultaneous_music (s)
 {
   set_mus_property ("iterator-ctor",
-                   Request_chord_iterator::constructor_cxx_function);
+                   Request_chord_iterator::constructor_proc);
 }
 
 Request_chord::Request_chord ()
 {
   set_mus_property ("iterator-ctor",
-                   Request_chord_iterator::constructor_cxx_function);
+                   Request_chord_iterator::constructor_proc);
 }
 
 Pitch
index 9cdd9078c71148974e9852771f5105dd42209192..4f135a31caedf8b216dad16dabf3f3b440c3410d 100644 (file)
@@ -48,11 +48,10 @@ Rest::after_line_breaking (SCM smob)
 /*
   make this function easily usable in C++
  */
-
 String
-Rest::glyph_name (Grob * me, int balltype, String style)
+Rest::glyph_name (Grob *me, int balltype, String style)
 {
-  bool ledger_b =false;
+  bool ledgered_b = false;
 
   if (balltype == 0 || balltype == 1)
     {
@@ -63,18 +62,49 @@ Rest::glyph_name (Grob * me, int balltype, String style)
        Figure out when the rest is far enough outside the staff. This
        could bemore generic, but hey, we understand this even after
        dinner.
-       
        */
-      ledger_b = ledger_b || (balltype == 0 && (pos >= rad +2   || pos < -rad ));
-      ledger_b = ledger_b || (balltype == 1 &&
-                             (pos  <= -rad -2 || pos > rad));
+      ledgered_b |= (balltype == 0) && (pos >= +rad + 2 || pos < -rad);
+      ledgered_b |= (balltype == 1) && (pos <= -rad - 2 || pos > +rad);
     }
 
-  return ("rests-") + to_string (balltype)
-    + (ledger_b ? "o" : "") + style;
-}
+  String actual_style (style.to_str0 ());
+
+  if ((style == "mensural") || (style == "neo_mensural")) {
+
+    /*
+      FIXME: Currently, ancient font does not provide ledgered rests;
+      hence the "o" suffix in the glyph name is bogus.  But do we need
+      ledgered rests at all now that we can draw ledger lines with
+      variable width, length and blotdiameter? -- jr
+    */
+    ledgered_b = 0;
+
+    /*
+      There are no 32th/64th/128th mensural/neo_mensural rests.  In
+      these cases, revert back to default style.
+    */
+    if (balltype > 4)
+      actual_style = "";
+  }
+
+  if ((style == "classical") && (balltype != 2)) {
+    /*
+      classical style: revert back to default style for any rest other
+      than quarter rest
+    */
+    actual_style = "";
+  }
 
+  if (style == "default") {
+    /*
+      Some parts of lily still prefer style "default" over "".
+      Correct this here. -- jr
+    */
+    actual_style = "";
+  }
 
+  return ("rests-") + to_string (balltype) + (ledgered_b ? "o" : "") + actual_style;
+}
 
 
 MAKE_SCHEME_CALLBACK (Rest,brew_molecule,1);
@@ -91,20 +121,21 @@ Rest::brew_internal_molecule (SCM smob)
   int balltype = gh_scm2int (balltype_scm);
   
   String style; 
-  SCM style_sym =me->get_grob_property ("style");
-  if (gh_symbol_p (style_sym))
+  SCM style_scm = me->get_grob_property ("style");
+  if (gh_symbol_p (style_scm))
     {
-      style = ly_scm2string (scm_symbol_to_string (style_sym));
+      style = ly_scm2string (scm_symbol_to_string (style_scm));
     }
 
-  for(;;) {
-    String idx = glyph_name (me, balltype, style);
-    Molecule res = Font_interface::get_default_font (me)->find_by_name (idx);
-    if(res.empty_b() && style!="")
-      style="";
-    else
-      return res.smobbed_copy();
-  }
+  Font_metric *fm = Font_interface::get_default_font (me);
+  String font_char = glyph_name (me, balltype, style);
+  Molecule out = fm->find_by_name (font_char);
+  if (out.empty_b())
+    {
+      me->warning (_f ("rest `%s' not found, ", font_char.to_str0 ()));
+    }
+
+  return out.smobbed_copy();
 }
 
 SCM 
index 693158620ba71fbc41889ffb947651fdf95b8a3c..ce13f5ec447eee430d1a684c00f92d29a064aa66 100644 (file)
@@ -55,11 +55,8 @@ Score_engraver::make_columns ()
       Grob_info i2 (musical_column_);
       i2.origin_trans_ = this;
 
-  
       announce_grob (i1);
       announce_grob (i2);
-
-      
     }
 }
 
@@ -145,6 +142,8 @@ Score_engraver::one_time_step ()
     }
   
   stop_translation_timestep ();
+  
+  apply_finalizations ();
   check_removal ();
 
 
@@ -176,7 +175,6 @@ Score_engraver::typeset_grob (Grob *elem)
   if (!elem)
     programming_error ("Score_engraver: empty elt\n");
   else
-
     elems_.push (elem);
 }
 
index 1c0956d8572fc77f7e6c2e20214ee56bc6bf836d..ceb327d9ec228e7506adf664793ad5f566604a14 100644 (file)
@@ -71,28 +71,10 @@ Score::~Score ()
 }
 
 
-/*
-  should enable  this to find weird mistakes? 
-*/
-#define PARANOIA
-
-#ifdef PARANOIA
-#include <sys/resource.h>
-#endif
 
 void
 Score::run_translator (Music_output_def *odef)
 {
-#ifdef PARANOIA
-  if (verbose_global_b)
-    {
-      struct rlimit rls;
-
-      getrlimit (RLIMIT_STACK, &rls);
-      progress_indication (_f("stack size cur %d, max %d\n" ,rls.rlim_cur, rls.rlim_max));
-    }
-#endif
-  
   /*
     We want to know if we want to store locations, since they take a
     lot of overhead.
@@ -110,15 +92,14 @@ Score::run_translator (Music_output_def *odef)
   Music * music = unsmob_music (music_);
   
   trans->final_mom_ = music->length_mom ();
-
-  Music_iterator * iter = Music_iterator::get_static_get_iterator (music);
+  SCM protected_iter =  Music_iterator::get_static_get_iterator (music);
+  Music_iterator * iter = unsmob_iterator (protected_iter);
   iter->init_translator (music, trans);
 
   iter->construct_children ();
 
   if (! iter->ok ())
     {
-      delete iter;
       warning (_ ("Need music in a score"));
       errorlevel_ =1;
       return ;
@@ -126,7 +107,8 @@ Score::run_translator (Music_output_def *odef)
 
   trans->start ();
   trans->run_iterator_on_me (iter);
-  delete iter;
+  iter->quit();
+  scm_remember_upto_here_1 (protected_iter);
   trans->finish ();
 
   if (errorlevel_)
index deab16f0266f46a6c48f5b58fd3fa1a4824a649d..2a6e38bea4702759aa816f233518768928e0aa45 100644 (file)
@@ -23,55 +23,59 @@ Script_column::add_staff_sided (Grob *me, Item *i)
   me->add_dependency (i);
 }
 
-static int
-staff_side_compare (Grob * const &i1,
-                   Grob * const &i2)
+LY_DEFINE(grob_script_priority_less,
+         "ly-grob-script-priority-less", 2, 0, 0, 
+         (SCM a, SCM b),
+         "Compare two grobs by script priority. For internal use.")
 {
+  Grob * i1 = unsmob_grob (a);
+  Grob* i2 = unsmob_grob (b);
+
   SCM p1 = i1->get_grob_property ("script-priority");
   SCM p2 = i2->get_grob_property ("script-priority");
 
-  return gh_scm2int (p1) - gh_scm2int (p2);
+  return gh_scm2int (p1) < gh_scm2int (p2) ? SCM_BOOL_T : SCM_BOOL_F;
 }
 
-MAKE_SCHEME_CALLBACK (Script_column,before_line_breaking,1);
 
+
+MAKE_SCHEME_CALLBACK (Script_column,before_line_breaking,1);
 SCM
 Script_column::before_line_breaking (SCM smob)
 {
   Grob* me = unsmob_grob (smob);
-  Drul_array<Link_array<Grob> > arrs;
+  Drul_array<SCM> scripts (SCM_EOL, SCM_EOL);
   Link_array<Grob> staff_sided 
     = Pointer_group_interface__extract_grobs (me, (Grob*)0, "scripts");
                                     
   for (int i=0; i < staff_sided.size (); i++)
     {
-      Direction d = Side_position_interface::get_direction (staff_sided[i]);
+      Grob* g = staff_sided[i];
+      Direction d = Side_position_interface::get_direction (g);
       if (!d)
        {
          programming_error ( "No direction for script?");
          d = DOWN;
-         staff_sided[i]->set_grob_property ("direction", gh_int2scm (d));
+         g->set_grob_property ("direction", gh_int2scm (d));
        }
       
-      arrs[d].push (staff_sided[i]);
+      scripts[d] = scm_cons (g->self_scm(), scripts[d]);
     }
 
   Direction d = DOWN;
   do {
-    Link_array<Grob> &arr
-      (arrs[d]);
+    SCM ss = scm_reverse_x (scripts[d], SCM_EOL);
     
-    arr.sort (staff_side_compare);
+    ss = scm_stable_sort_x (ss,  grob_script_priority_less_proc);
 
     Grob * last = 0;
-    for (int i=0; i < arr.size (); i++)
+    for (SCM s = ss; gh_pair_p (s); s = gh_cdr (s))
       {
-
+       Grob* g = unsmob_grob (gh_car (s));
        if (last)
-         Side_position_interface::add_support (arr[i],last);
-           
-       arr[i]->set_grob_property ("script-priority", SCM_EOL);
-       last = arr[i];
+         Side_position_interface::add_support (g,last);
+
+       last = g;
       }
     
   } while (flip (&d) != DOWN);
index 455ab600eb0861ef37485174f169ae98387d877f..aa16108eddc2fc43d4e73751415402d712ae82d8 100644 (file)
@@ -89,8 +89,11 @@ Script_engraver::process_music ()
       if (gh_number_p (s))
        priority = gh_scm2int (s);
 
-      /* Make sure they're in order of user input by adding index i. */
-      priority += i * (to_dir (force_dir) ? to_dir (force_dir) : 1);
+      /* Make sure they're in order of user input by adding index i.
+      Don't use the direction in this priority. Smaller means closer
+      to the head.
+      */
+      priority += i;
 
       if (ly_dir_p (force_dir) && to_dir (force_dir))
        p->set_grob_property ("direction", force_dir);
index 64247fd72714cd8143bbf549b041ffdfe2f8c598..6817d3a0d5c71c7f95cd85f6d5d22683a8aa988d 100644 (file)
@@ -21,20 +21,6 @@ Grace_fixup *get_grace_fixups (SCM cursor);
 
 */
 
-/*
-
-  TODO: the grace note handling hasn't been done for skip() and
-  get_pending_events(), meaning that staff-switching and partcombining will be
-  broken with grace notes.
-  
- */
-/*
-
-  TODO: the grace note handling hasn't been done for skip() and
-  get_pending_events(), meaning that staff-switching and partcombining will be
-  broken with grace notes.
-  
- */
 /*
   Invariant for the data structure.
 
@@ -53,6 +39,8 @@ Grace_fixup *get_grace_fixups (SCM cursor);
 Sequential_iterator::Sequential_iterator ()
 {
   here_mom_ = Moment (0);
+  list_ = SCM_EOL;
+  cursor_ = SCM_EOL; 
   grace_fixups_ = 0;
   iter_ =0;
 }
@@ -63,6 +51,14 @@ Sequential_iterator::get_music_list () const
   return SCM_EOL;
 }
 
+void
+Sequential_iterator::do_quit ()
+{
+  if (iter_)
+    iter_->quit();
+}
+
+
 Sequential_iterator::Sequential_iterator (Sequential_iterator const &src)
   : Music_iterator (src)
 {
@@ -70,15 +66,19 @@ Sequential_iterator::Sequential_iterator (Sequential_iterator const &src)
   cursor_ = src.cursor_;
   list_ = src.cursor_;
   here_mom_ = src.here_mom_;
-  if (src.iter_)
-    iter_ = src.iter_->clone ();
-  else
-    iter_ = 0;
+  iter_ = (src.iter_) ? src.iter_->clone () : 0;
+
+  if (iter_)
+    scm_gc_unprotect_object (iter_->self_scm());
 }
 
-Sequential_iterator::~Sequential_iterator ()
+void
+Sequential_iterator::derived_mark ()const
 {
-  delete iter_;
+  if (iter_)
+    scm_gc_mark (iter_->self_scm());
+  scm_gc_mark (list_);
+  scm_gc_mark (cursor_);
 }
 
 
@@ -143,7 +143,13 @@ Sequential_iterator::construct_children ()
   list_ = get_music_list ();
   cursor_ = list_; 
 
-  iter_ = gh_pair_p (cursor_) ?  get_iterator (unsmob_music (ly_car (cursor_))) : 0;
+  iter_ = 0;
+  if (gh_pair_p (cursor_))
+    {
+      Music *m  =unsmob_music (ly_car (cursor_));
+      iter_ = unsmob_iterator (get_iterator (m));
+    }
+  
   while (iter_ && !iter_->ok ())
     {
       next_element (true);
@@ -196,11 +202,11 @@ Sequential_iterator::next_element (bool side_effect)
       here_mom_ += len;
     }
   
-  delete iter_;
   cursor_ = ly_cdr (cursor_);
 
+  iter_->quit();
   if (gh_pair_p (cursor_))
-    iter_ = get_iterator (unsmob_music (ly_car (cursor_)));
+    iter_ = unsmob_iterator (get_iterator (unsmob_music (ly_car (cursor_))));
   else
     iter_ = 0;
 }
@@ -256,8 +262,8 @@ Sequential_iterator::get_pending_events (Moment until)const
       else
        me->next_element (false);
     }
-  delete me;
-  
+
+  scm_gc_unprotect_object (me->self_scm());
   return s;
 }
 
@@ -266,8 +272,6 @@ Sequential_iterator::get_pending_events (Moment until)const
   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
-
-  TODO: check support for grace notes here.
  */
 void
 Sequential_iterator::skip (Moment until)
index 1079706bb6afb57df3722ed3cd4ed8c80a0456af..6b019e7861d2fd5323ed179e067a6daa735644e7 100644 (file)
@@ -37,5 +37,5 @@ IMPLEMENT_CTOR_CALLBACK (Sequential_music_iterator);
 SCM
 Sequential_music_iterator::get_music_list()const
 {
-  return  dynamic_cast<Music_sequence const*> (get_music ())->music_list ();
+  return dynamic_cast<Music_sequence const*> (get_music ())->music_list ();
 }
index 0933d28e5308da8555914fbf5089b72a9c75826e..6a1c6f5240ef8dfe4c96bdf3ee467025e99e9f45 100644 (file)
@@ -6,13 +6,13 @@ Sequential_music::Sequential_music (SCM head)
   : Music_sequence (head)
 {
   set_mus_property ("iterator-ctor",
-                   Sequential_music_iterator::constructor_cxx_function);
+                   Sequential_music_iterator::constructor_proc);
 }
 Sequential_music::Sequential_music ()
   : Music_sequence ()
 {
   set_mus_property ("iterator-ctor",
-                   Sequential_music_iterator::constructor_cxx_function);
+                   Sequential_music_iterator::constructor_proc);
 }
 
 
index fef3caea83c00865000c23c41733f7b74b758c4b..aa6269be08087d869d625dd96c44a0a8b44f81c4 100644 (file)
@@ -9,7 +9,7 @@
   - add support for different stretch/shrink constants?
   
 */
-
+#include <stdio.h>
 #include <math.h>
 #include <libc-extension.hh>   // isinf
 
@@ -311,8 +311,21 @@ Simple_spacer::add_columns (Link_array<Grob> const &icols)
     my_solve_linelen ();
 }
 
-#include <stdio.h>
+/*
+  
+  TODO: should a add penalty for widely varying spring forces (caused
+  by constraints, eg.
 
+
+         =====  
+         |   |
+  o|o|  x ##x
+
+
+  The ## forces the notes apart; we shouldn't allow the O's to touch
+  this closely.
+  
+ */
 void
 Simple_spacer::solve (Column_x_positions *positions, bool ragged) const
 {
index dcdf880ab5305f2250fad3b58bfdad75a8b20409..957b7bb628ba6ef388413702ae520ccc18159c30 100644 (file)
 Simultaneous_music_iterator::Simultaneous_music_iterator ()
 {
   separate_contexts_b_ = false;
+  children_list_ = SCM_EOL;
 }
 
 Simultaneous_music_iterator::Simultaneous_music_iterator (Simultaneous_music_iterator const& src)
   : Music_iterator (src)
 {
-  separate_contexts_b_ = src.separate_contexts_b_;
-  for (Cons<Music_iterator> *p = src.children_p_list_.head_; p; p = p->next_)
+  separate_contexts_b_
+    = src.separate_contexts_b_;
+  
+  SCM children_list = SCM_EOL;
+  SCM *tail  = &children_list; 
+  for (SCM s = src.children_list_; gh_pair_p (s); s = gh_cdr(s))
     {
-      Music_iterator *i = p->car_;
-      children_p_list_.append (new Killing_cons<Music_iterator> (i->clone (), 0));
+      Music_iterator *i = unsmob_iterator (gh_car (s));
+      SCM cl = i->clone ()->self_scm();
+      *tail = scm_cons (cl, *tail);
+      tail = SCM_CDRLOC (*tail);
+      scm_gc_unprotect_object (cl);
     }
+
+  children_list_ = children_list;
+  scm_remember_upto_here_1 (children_list);
 }
 
-Simultaneous_music_iterator::~Simultaneous_music_iterator ()
+void
+Simultaneous_music_iterator::derived_mark()const
 {
-  children_p_list_.junk ();
+  scm_gc_mark (children_list_);
 }
 
 SCM
 Simultaneous_music_iterator::get_pending_events (Moment m)const
 {
-  SCM s = SCM_EOL;
-  for (Cons<Music_iterator> *p = children_p_list_.head_; p; p = p->next_)
+  SCM l = SCM_EOL;
+  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
     {
-      s = gh_append2 (p->car_->get_pending_events (m), s);
+      l = gh_append2 (unsmob_iterator (gh_car (s))->get_pending_events (m), l);
     }
-  return s;
+  return l;
 }
 
 void
@@ -51,10 +63,15 @@ Simultaneous_music_iterator::construct_children ()
   int j = 0;
 
   SCM i = get_music ()->get_mus_property ("elements");
+
+  children_list_ = SCM_EOL;
+  SCM * tail = &children_list_;
   for (; gh_pair_p (i); i = ly_cdr (i), j++)
     {
       Music *mus = unsmob_music (ly_car (i));
-      Music_iterator * mi = get_static_get_iterator (mus);
+
+      SCM scm_iter = get_static_get_iterator (mus);
+      Music_iterator * mi = unsmob_iterator (scm_iter);
 
       /* if separate_contexts_b_ is set, create a new context with the
         number number as name */
@@ -69,48 +86,60 @@ Simultaneous_music_iterator::construct_children ()
 
       mi->init_translator (mus, t);
       mi->construct_children ();
-      
+
       if (mi->ok ()) 
        {
-         children_p_list_.append (new Killing_cons<Music_iterator> (mi,0));
+         *tail = scm_cons (scm_iter, *tail);
+         tail = SCM_CDRLOC (*tail);
        }
       else
-       delete mi;
+       mi->set_translator (0);
     }
 }
 
-
 void
 Simultaneous_music_iterator::process (Moment until)
 {
-  for (Cons<Music_iterator> **pp = &children_p_list_.head_; *pp;)
+  SCM *proc = &children_list_; 
+  while(gh_pair_p (*proc))
     {
-      Music_iterator * i = (*pp)->car_;
+      Music_iterator * i = unsmob_iterator (gh_car (*proc));
       if (i->pending_moment () == until) 
        {
          i->process (until);
        }
       if (!i->ok ())
-       delete children_p_list_.remove_cons (pp);
+       {
+         i->quit ();
+         *proc = gh_cdr (*proc);
+       }
       else
-       pp = & (*pp)->next_;
+       {
+         proc = SCM_CDRLOC(*proc);
+       }
     }
 }
 
 void
 Simultaneous_music_iterator::skip (Moment until)
 {
-  for (Cons<Music_iterator> **pp = &children_p_list_.head_; *pp;)
+  SCM *proc = &children_list_; 
+  while(gh_pair_p (*proc))
     {
-      Music_iterator * i = (*pp)->car_;
+      Music_iterator * i = unsmob_iterator (gh_car (*proc));
       if (i->pending_moment () <= until) 
        {
          i->skip (until);
        }
       if (!i->ok ())
-       delete children_p_list_.remove_cons (pp);
+       {
+         i->quit ();
+         *proc = gh_cdr (*proc);
+       }
       else
-       pp = & (*pp)->next_;
+       {
+         proc = SCM_CDRLOC(*proc);
+       }
     }
 }
 
@@ -120,8 +149,8 @@ Simultaneous_music_iterator::pending_moment () const
   Moment next;
   next.set_infinite (1);
   
-  for (Cons<Music_iterator> *p = children_p_list_.head_; p; p = p->next_)
-    next = next <? p->car_->pending_moment () ;
+  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
+    next = next <? unsmob_iterator (gh_car (s))->pending_moment () ;
   return next;
 }
 
@@ -130,18 +159,24 @@ Simultaneous_music_iterator::pending_moment () const
 bool
 Simultaneous_music_iterator::ok () const
 {
-  return children_p_list_.head_;
+  return gh_pair_p (children_list_);
 }
 
 Music_iterator*
 Simultaneous_music_iterator::try_music_in_children (Music *m) const
 {
   Music_iterator * b=0;
-  for (Cons<Music_iterator> *p = children_p_list_.head_; !b && p; p = p->next_)
-    b =p->car_->try_music (m);
+  for (SCM s = children_list_; !b && gh_pair_p (s); s = gh_cdr(s))
+    b =unsmob_iterator (gh_car (s))->try_music (m);
   return b;
 }
 
+void
+Simultaneous_music_iterator::do_quit ()
+{
+  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
+    unsmob_iterator (gh_car (s))->quit();
+}
 
 
 IMPLEMENT_CTOR_CALLBACK (Simultaneous_music_iterator);
index 85a3b8136fd8de2222f4454b13bd9008004289d9..580a6f9b9d4fd44e5f33e4efdf2370960333218e 100644 (file)
@@ -20,14 +20,14 @@ Simultaneous_music::Simultaneous_music (SCM head)
   : Music_sequence (head)
 {
   set_mus_property ("iterator-ctor",
-                   Simultaneous_music_iterator::constructor_cxx_function);
+                   Simultaneous_music_iterator::constructor_proc);
 }
 
 Simultaneous_music::Simultaneous_music ()
   : Music_sequence ()
 {
   set_mus_property ("iterator-ctor",
-                   Simultaneous_music_iterator::constructor_cxx_function);
+                   Simultaneous_music_iterator::constructor_proc);
   
 }
 
index cbe4967b52537339c7b665ae2c92811ebf6c58be..23cf17cf7c0e6f514912fbae7d33f2a6b9a322d4 100644 (file)
@@ -7,6 +7,8 @@
   & Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+#include "config.h"
+
 #include <stdio.h>
 #include <assert.h>
 #if HAVE_SSTREAM
@@ -99,6 +101,10 @@ Source_file::Source_file (String filename_string)
   pos_str0_ = to_str0 ();
 
   init_port();
+
+  for (int i = 0; i < length_; i++)
+    if (contents_str0_[i] == '\n')
+      newline_locations_.push (contents_str0_ + i);
 }
 
 void
@@ -121,11 +127,6 @@ Source_file::tell () const
 std::istream*
 Source_file::get_istream ()
 {
-  /*
-    if (!name_string_.length ())
-      return &cin;
-    */
-
   if (!istream_)
     {
       if (length ()) // can-t this be done without such a hack?
@@ -160,7 +161,7 @@ Source_file::~Source_file ()
 {
   delete istream_;
   istream_ = 0;
-  delete contents_str0_;
+  delete[] contents_str0_;
 }
 
 Slice
@@ -261,15 +262,15 @@ Source_file::get_line (char const* pos_str0) const
   if (!in_b (pos_str0))
     return 0;
 
-  int i = 1;
-  char const* scan_str0 = to_str0 ();
-  if (!scan_str0)
-    return 0;
-
-  while (scan_str0 < pos_str0)
-    if (*scan_str0++ == '\n')
-      i++;
-  return i;
+  int lo=0;
+  int hi = newline_locations_.size();
+  
+  binary_search_bounds (newline_locations_,
+                       pos_str0, 
+                       Link_array<char>::default_compare,
+                       &lo, &hi);
+  
+  return lo;
 }
 
 int
index b29c40425bb14982025c66dc83dcc5a1e8689504..bc2d9bdd12a8f4047cd911529342727903476587 100644 (file)
@@ -289,7 +289,7 @@ Spanner::get_broken_left_end_align () const
 }
 
 SCM
-Spanner::do_derived_mark ()
+Spanner::do_derived_mark () const
 {
   /*
     We'd be fucked if this is called before spanned_drul_[] is inited.  */
@@ -336,8 +336,7 @@ Spanner::set_spacing_rods (SCM smob)
   r.item_l_drul_[LEFT] = sp->get_bound (LEFT);
   r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT);
   r.distance_ =
-    gh_scm2double (me->get_grob_property ("minimum-length"))
-    * 1.0;
+    gh_scm2double (me->get_grob_property ("minimum-length"));
 
   r.add_to_cols ();
   return SCM_UNSPECIFIED;
index cf931c2f23bbf18798f0b789cdcbacb77476a594..bc95433a78e8fc0a07d7021d7f616dbf6ec30fc7 100644 (file)
@@ -203,6 +203,13 @@ Staff_spacing::get_spacing_params (Grob *me, Real * space, Real * fixed)
                                                 &last_ext);
   if (!last_grob)
     {
+      /*
+       TODO:
+       
+       Should  insert a adjustable space here? For excercises, you might want to
+       use a staff without a clef in the beginning. 
+       */
+      
       /*
        we used to have a warning here, but itgenerates a lot of
        spurious error messages.
index 07ff23e07eafa14633e9da1fe9276265cc0b8059..b1f3eb4b9957c5a26ba92dd7ce005b53fbb640c3 100644 (file)
@@ -79,14 +79,21 @@ Stem_engraver::acknowledge_grob (Grob_info i)
                the first and last (quarter) note bothe get one tremolo flag.
               */
              int requested_type = gh_scm2int (tremolo_req_->get_mus_property ("tremolo-type"));
-             
              SCM f = get_property ("tremoloFlags");
              if (!requested_type && gh_number_p (f))
                requested_type = gh_scm2int (f);
              else
                daddy_trans_->set_property ("tremoloFlags", gh_int2scm (requested_type));
 
-             if (requested_type)
+             int tremolo_flags = intlog2 (requested_type) - 2
+               - (duration_log > 2 ? duration_log - 2 : 0);
+             if (tremolo_flags <= 0)
+               {
+                 tremolo_req_->origin()->warning (_("tremolo duration is too long"));
+                 tremolo_flags = 0;
+               }
+
+             if (tremolo_flags)
                {
                  tremolo_ = new Item (get_property ("StemTremolo"));
                  announce_grob(tremolo_, tremolo_req_->self_scm());
@@ -96,11 +103,7 @@ Stem_engraver::acknowledge_grob (Grob_info i)
                    the tremolo-type minus the number of flags of the note
                    itself.
                   */
-                 int tremolo_flags = intlog2 (requested_type) - 2
-                   - (duration_log > 2 ? duration_log - 2 : 0);
-                 if (tremolo_flags < 0)
-                   tremolo_flags = 0;
-                 tremolo_->set_grob_property ("flag-count",
+                         tremolo_->set_grob_property ("flag-count",
                                                gh_int2scm (tremolo_flags));
                  tremolo_->set_parent (stem_, X_AXIS);
                }
index fa3401e2a923348ff7b9dd8b2861b3d8302be108..c9deff1dc9c019a8e72b2ea6cbb7e3fa7ce2c7d8 100644 (file)
@@ -516,6 +516,12 @@ Stem::height (SCM smob, SCM ax)
   Interval iv;
   if (mol != SCM_EOL)
     iv = unsmob_molecule (mol)->extent (a);
+  if (Grob *b =get_beam (me))
+    {
+      Direction d = get_direction (me);
+      iv[d] += d * Beam::get_thickness (b) /2.0 ;
+    }
+
   return ly_interval2scm (iv);
 }
 
@@ -527,17 +533,12 @@ Stem::flag (Grob*me)
    e.g. "stroke-style", maybe with values "" (i.e. no stroke),
    "single" and "double".  Needs more discussion.
   */
-  String style, fstyle, staffline_offs;
-  SCM fst = me->get_grob_property ("flag-style");
-  if (gh_string_p (fst))
-    {
-      fstyle = ly_scm2string (fst);
-    }
+  String style, staffline_offs;
 
-  SCM st = me->get_grob_property ("style");
-  if (gh_symbol_p (st))
+  SCM style_scm = me->get_grob_property ("style");
+  if (gh_symbol_p (style_scm))
     {
-      style = (ly_scm2string (scm_symbol_to_string (st)));
+      style = (ly_scm2string (scm_symbol_to_string (style_scm)));
     }
   else
     {
@@ -579,10 +580,9 @@ Stem::flag (Grob*me)
            
            --hwn.
          */
-         Grob *first = first_head(me);
-         int sz = Staff_symbol_referencer::line_count (me)-1;
-         int p = (int)rint (Staff_symbol_referencer::get_position (first));
-         staffline_offs = (((p ^ sz) & 0x1) == 0) ? "1" : "0";
+         int p = (int)rint (Staff_symbol_referencer::get_position (first_head (me)));
+         staffline_offs = Staff_symbol_referencer::on_staffline (me, p) ?
+           "1" : "0";
        }
       else
         {
@@ -593,14 +593,36 @@ Stem::flag (Grob*me)
     {
       staffline_offs = "";
     }
-  char c = (get_direction (me) == UP) ? 'u' : 'd';
-  String index_string
-    = String ("flags-") + style + to_string (c) + staffline_offs + to_string (duration_log (me));
-  Molecule m
-    = Font_interface::get_default_font (me)->find_by_name (index_string);
-  if (!fstyle.empty_b ())
-    m.add_molecule (Font_interface::get_default_font (me)->find_by_name (String ("flags-") + to_string (c) + fstyle));
-  return m;
+  char dir = (get_direction (me) == UP) ? 'u' : 'd';
+  String font_char =
+    style + to_string (dir) + staffline_offs + to_string (duration_log (me));
+  Font_metric *fm = Font_interface::get_default_font (me);
+  Molecule flag = fm->find_by_name ("flags-" + font_char);
+  if (flag.empty_b ())
+    {
+      me->warning (_f ("flag `%s' not found", font_char));
+    }
+
+  SCM stroke_scm = me->get_grob_property ("flag-style");
+  if (gh_string_p (stroke_scm))
+    {
+      String stroke = ly_scm2string (stroke_scm);
+      if (!stroke.empty_b ())
+       {
+         String font_char = to_string (dir) + stroke;
+         Molecule stroke = fm->find_by_name ("flags-" + font_char);
+         if (stroke.empty_b ())
+           {
+             me->warning (_f ("flag stroke `%s' not found", font_char));
+           }
+         else
+           {
+             flag.add_molecule (stroke);
+           }
+       }
+    }
+
+  return flag;
 }
 
 MAKE_SCHEME_CALLBACK (Stem,dim_callback,2);
@@ -823,11 +845,7 @@ Stem::calc_stem_info (Grob *me)
                    me->get_grob_property ("beamed-minimum-free-lengths")))
     * staff_space;
   
-  int my_beam_count = Stem::beam_multiplicity (me).length () + 1;
-#if 0
-  Real height_of_my_beams = beam_thickness
-    + (my_beam_count - 1) * beam_translation;
-#else
+
   /* UGH
      It seems that also for ideal minimum length, we must use
      the maximum beam count (for this direction):
@@ -837,7 +855,6 @@ Stem::calc_stem_info (Grob *me)
      must be horizontal. */
   Real height_of_my_beams = beam_thickness
     + (beam_count - 1) * beam_translation;
-#endif
 
   Real ideal_minimum_length = ideal_minimum_free
     + height_of_my_beams
index 909a296bde62f3ed70e7ca8196ba8ec228607c34..e4bf7a8f52df09626ddc9cff55eee4e199941052 100644 (file)
@@ -100,12 +100,12 @@ Syllable_group::add_extender (Grob * extender)
 bool 
 Syllable_group::set_lyric_align (const char *punc, Grob *default_notehead)
 {
-  if (lyrics_.size ()<=1)
+  if (lyrics_.size () <= 0)
     {
-      // No lyrics or single line: nothing to do.
+      // No lyrics: nothing to do.
       return true;
     }
-
+  
   Grob * lyric;
   alignment_ = appropriate_alignment (punc);
   
index 38f0dc7100ab9ad6533478b97479a9dc247d243e..a301c88972107f2f43094dfc4eb6bdafe255812c 100644 (file)
@@ -127,27 +127,17 @@ System_start_delimiter::staff_brace (Grob*me, Real y)
 {
   Font_metric *fm = 0;
   
-  for (int i = 0; ; i++)
-    {
-      if (!fm || y > fm->get_char (fm->count ()-1)[Y_AXIS].length ())
-       {
-         /* We go through the style sheet to lookup the font file
-            name.  This is better than using find_font directly,
-            esp. because that triggers mktextfm for non-existent
-            fonts. */
-         SCM br = ly_symbol2scm ("braces");
-         SCM fam = gh_cons (ly_symbol2scm ("font-family"), br);
-         SCM sz = gh_cons (ly_symbol2scm ("font-relative-size"), gh_int2scm (i));
-
-         SCM alist = scm_list_n (fam, sz, SCM_UNDEFINED);
-         fm = Font_interface::get_font (me, scm_list_n (alist, SCM_UNDEFINED));
-         /* Hmm, if lookup fails, we get cmr10 anyway */
-         if (ly_scm2string (ly_car (fm->description_)) == "cmr10")
-           break;
-       }
-      else
-       break;
-    }
+  /* We go through the style sheet to lookup the font file
+     name.  This is better than using find_font directly,
+     esp. because that triggers mktextfm for non-existent
+     fonts. */
+  SCM br = ly_symbol2scm ("braces");
+  SCM fam = gh_cons (ly_symbol2scm ("font-family"), br);
+  SCM sz = gh_cons (ly_symbol2scm ("font-relative-size"), ly_symbol2scm ("*"));
+  
+  SCM alist = scm_list_n (fam, sz, SCM_UNDEFINED);
+  fm = Font_interface::get_font (me, scm_list_n (alist, SCM_UNDEFINED));
+  
 
   int lo = 0;
 
@@ -166,13 +156,11 @@ System_start_delimiter::staff_brace (Grob*me, Real y)
     }
   while (hi - lo > 1);
       
-  SCM at = scm_list_n (ly_symbol2scm ("char"), gh_int2scm (lo), SCM_UNDEFINED);
-  at = fontify_atom (fm, at);
-  
-  b = fm->get_char (lo);
+  Molecule m (fm->get_char_molecule (lo));
+  b=m.extent_box();
   b[X_AXIS] = Interval (0,0);
 
-  return Molecule (b, at);
+  return Molecule (b, m.get_expr());
 }
   
 
index a156c160e55627f444d4bfdd9aa10c5b42c82d9e..9e8062a42fc93efd9b3cff0732466f34366cd4f8 100644 (file)
@@ -25,7 +25,7 @@ class Tab_note_heads_engraver : public Engraver
   
   Link_array<Item> dots_;
   Link_array<Note_req> note_reqs_;
-  Link_array<Text_script_req> tabstring_reqs_;
+  Link_array<String_number_req> tabstring_reqs_;
 public:
   TRANSLATOR_DECLARATIONS(Tab_note_heads_engraver);
 
@@ -50,10 +50,8 @@ Tab_note_heads_engraver::try_music (Music *m)
       note_reqs_.push (n);
       return true;
     }
-  else if (Text_script_req * ts = dynamic_cast<Text_script_req*> (m))
+  else if (String_number_req * ts = dynamic_cast<String_number_req*> (m))
     {
-      if (m->get_mus_property ("text-type") != ly_symbol2scm ("finger")) return false;
-      
       while(tabstring_reqs_.size () < note_reqs_.size ()-1)
        tabstring_reqs_.push(0);
       tabstring_reqs_.push(ts);
@@ -75,6 +73,7 @@ Tab_note_heads_engraver::process_music ()
     {
       SCM stringTunings = get_property ("stringTunings");
       int number_of_strings = ((int) gh_length(stringTunings));
+      bool high_string_one = to_boolean(get_property ("highStringOne"));
 
       Item * note  = new Item (get_property ("TabNoteHead"));
       
@@ -84,16 +83,17 @@ Tab_note_heads_engraver::process_music ()
       if(tabstring_reqs_.size()>i)
        tabstring_req = tabstring_reqs_[i];
       // printf("%d %d\n",tabstring_reqs_.size(),i);
-      size_t lenp;
+      // size_t lenp;
       int tab_string;
       bool string_found;
       if (tabstring_req) {
-       char* tab_string_as_string = gh_scm2newstr(tabstring_req->get_mus_property ("text"), &lenp);
-       tab_string = atoi(tab_string_as_string);
+       //char* tab_string_as_string = gh_scm2newstr(tabstring_req->get_mus_property ("text"), &lenp);
+       //tab_string = atoi(tab_string_as_string);
+       tab_string = gh_scm2int(tabstring_req->get_mus_property ("string-number"));
        string_found = true;
       }
       else {
-       tab_string = number_of_strings;
+       tab_string = high_string_one ? 1 : number_of_strings;
        string_found = false;
       }
       
@@ -125,24 +125,18 @@ Tab_note_heads_engraver::process_music ()
        int fret = unsmob_pitch(scm_pitch)->semitone_pitch()
          - gh_scm2int(gh_list_ref(stringTunings,gh_int2scm(tab_string-1)));
        if(fret<min_fret)
-         tab_string--;
+         tab_string += high_string_one ? 1 : -1;
        else
          string_found = true;
       }
 
       SCM text = gh_call3 (proc, gh_int2scm (tab_string), stringTunings, scm_pitch);
 
-      int pos = 2 * tab_string - 2; // No tab-note between the string !!!
-      
-      if (number_of_strings % 2) { // odd number of string
-       pos++;
-      }
-
-      
-      note->set_grob_property ("text", text);
-      SCM c0 = get_property ("centralCPosition");
-      if (gh_number_p (c0)) pos += gh_scm2int (c0);
+      int pos = 2 * tab_string - number_of_strings - 1; // No tab-note between the string !!!
+      if(to_boolean(get_property("stringOneTopmost")))
+       pos = -pos;
       
+      note->set_grob_property ("text", text);      
       
       note->set_grob_property ("staff-position", gh_int2scm (pos));
       announce_grob (note, req->self_scm());
@@ -180,6 +174,6 @@ ENTER_DESCRIPTION(Tab_note_heads_engraver,
 /* descr */       "Generate one or more tablature noteheads from Music of type Note_req.",
 /* creats*/       "TabNoteHead Dots",
 /* acks  */       "",
-/* reads */       "centralCPosition stringTunings minimumFret tablatureFormat",
+/* reads */       "centralCPosition stringTunings minimumFret tablatureFormat highStringOne stringOneTopmost",
 /* write */       "");
 
index a448d15ef820b7972cd97a1efae7e250183746fd..723e111741e04760f4bac5cde99403b68eb8f5cf 100644 (file)
@@ -105,8 +105,8 @@ Text_engraver::process_acknowledged_grobs ()
       if (gh_number_p (s))
        priority = gh_scm2int (s);
       
-      /* Make sure they're in order of user input by adding index i. */
-      priority += i * (r->get_direction () ? r->get_direction () : 1);
+      /* see script-engraver.cc */
+      priority += i;
       
       text->set_grob_property ("script-priority", gh_int2scm (priority));
 
index 8e26e7d5019f1ecfd1e67ecb22baf0c369f4b925..e0d1c5f0a733fd230a443be0829402e8ed6516b4 100644 (file)
@@ -29,7 +29,7 @@ protected:
   virtual bool try_music (Music *);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void process_acknowledged_grobs ();
+  virtual void process_music ();
 
 private:
   Spanner *span_;
@@ -82,7 +82,7 @@ Text_spanner_engraver::try_music (Music *m)
 }
 
 void
-Text_spanner_engraver::process_acknowledged_grobs ()
+Text_spanner_engraver::process_music ()
 {
   if (req_drul_[STOP])
     {
@@ -93,14 +93,9 @@ Text_spanner_engraver::process_acknowledged_grobs ()
        }
       else
        {
-         assert (!finished_);
-         Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
-         span_->set_bound (RIGHT, e);
-
          finished_ = span_;
          span_ = 0;
          current_req_ = 0;
-         req_drul_[STOP] = 0;
        }
     }
 
@@ -108,8 +103,7 @@ Text_spanner_engraver::process_acknowledged_grobs ()
     {
       if (current_req_)
        {
-         req_drul_[START]->origin ()->warning
- (_ ("already have a text spanner"));
+         req_drul_[START]->origin ()->warning(_ ("already have a text spanner"));
        }
       else
        {
@@ -122,9 +116,6 @@ Text_spanner_engraver::process_acknowledged_grobs ()
          span_->set_grob_property ("width-correct", gh_double2scm (0));
                    
          Side_position_interface::set_axis (span_, Y_AXIS);
-         Grob *e = unsmob_grob (get_property ("currentMusicalColumn"));
-         span_->set_bound (LEFT, e);
-         
          announce_grob (span_, req_drul_[START]->self_scm());
          req_drul_[START] = 0;
        }
@@ -134,10 +125,14 @@ Text_spanner_engraver::process_acknowledged_grobs ()
 void
 Text_spanner_engraver::acknowledge_grob (Grob_info info)
 {
-  if (span_ && Note_column::has_interface (info.grob_))
+  Spanner * spans[2] ={span_, finished_};
+  for (int i = 0;  i < 2 ; i++)
     {
-      Side_position_interface::add_support (span_, info.grob_);
-      add_bound_item (span_, dynamic_cast<Item*> (info.grob_));
+      if (spans[i] && Note_column::has_interface (info.grob_))
+       {
+         Side_position_interface::add_support (spans[i], info.grob_);
+         add_bound_item (spans[i], dynamic_cast<Item*> (info.grob_));
+       }
     }
 }
 
@@ -147,6 +142,12 @@ Text_spanner_engraver::typeset_all ()
   if (finished_)
     {
       Side_position_interface::add_staff_support (finished_);
+
+      if (!finished_->get_bound (RIGHT))
+       {
+         Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
+         span_->set_bound (RIGHT, e);
+       }
       typeset_grob (finished_);
       finished_ = 0;
     }
@@ -155,6 +156,12 @@ Text_spanner_engraver::typeset_all ()
 void
 Text_spanner_engraver::stop_translation_timestep ()
 {
+  if (span_ && !span_->get_bound (LEFT))
+    {
+      Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
+      span_->set_bound (LEFT, e);
+    }
+
   typeset_all ();
 }
 
@@ -171,7 +178,7 @@ Text_spanner_engraver::finalize ()
 }
 
 ENTER_DESCRIPTION(Text_spanner_engraver,
-/* descr */       "Create text spanner from a  Span_req ",
+/* descr */       "Create text spanner from a Span_req.",
 /* creats*/       "TextSpanner",
 /* acks  */       "note-column-interface",
 /* reads */       "",
index 4c1e81343eb0c76333929f1ac9650641f5dd7e92..cbba1e4f03e449051456cdd6328133982015cc28 100644 (file)
@@ -27,5 +27,5 @@ Time_scaled_music_iterator::process (Moment m)
 
   Music_wrapper_iterator::process (m);
 }
-
 IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);
index 2b79cc390b9eef526fbc7c2cbc0a198e7086df88..a46483a491c27d1b2b474abfd5c3924ef3e5e54e 100644 (file)
@@ -14,7 +14,7 @@ Time_scaled_music::Time_scaled_music (SCM l)
   : Music_wrapper (l)
 {
   set_mus_property ("iterator-ctor",
-                   Time_scaled_music_iterator::constructor_cxx_function);
+                   Time_scaled_music_iterator::constructor_proc);
   
 }
 
index d960b647cdb12b303989994a02ccf9e52f823125..e66adfc8d4214b6776b28bf66a5cc66de2368757 100644 (file)
@@ -57,30 +57,39 @@ Time_signature::brew_molecule (SCM smob)
 }
 
 Molecule
-Time_signature::special_time_signature (Grob *me, SCM style, int n, int d)
+Time_signature::special_time_signature (Grob *me, SCM scm_style, int n, int d)
 {
-  String st = ly_scm2string (scm_symbol_to_string (style));
-  SCM scm_n = gh_int2scm (n);
-  SCM scm_d = gh_int2scm (d);
-  SCM exp = scm_list_n (ly_symbol2scm ("find-timesig-symbol"),
-                       scm_n, scm_d, ly_quote_scm (style),
-                       SCM_UNDEFINED);
-  SCM scm_pair = scm_primitive_eval (exp);
-  SCM scm_font_char = ly_car (scm_pair);
-  SCM scm_font_family = ly_cdr (scm_pair);
-  String font_char = ly_scm2string (scm_font_char);
-  String font_family = ly_scm2string (scm_font_family);
-  me->set_grob_property("font-family", ly_symbol2scm (font_family.to_str0 ()));
-
-  Molecule m =
-    Font_interface::get_default_font (me)->find_by_name ("timesig-" + font_char);
-  if (!m.empty_b ())
-    return m;
+  String style = ly_scm2string (scm_symbol_to_string (scm_style));
+
+  if (style == "numbered")
+    return numbered_time_signature (me, n, d);
+
+  if ((style == "default") || (style == ""))
+    style = to_string ("C");
+
+  if (style == "C")
+    {
+      if /* neither C2/2 nor C4/4 */
+       (((n != 2) || (d != 2)) && 
+        ((n != 4) || (d != 4)))
+       {
+         return numbered_time_signature (me, n, d);
+       }
+    }
+
+  String char_name = style + to_string (n) + "/" + to_string (d);
+  me->set_grob_property ("font-family", ly_symbol2scm ("music"));
+  Molecule out =
+    Font_interface::get_default_font (me)->find_by_name ("timesig-" + char_name);
+  if (!out.empty_b ())
+    return out;
 
   /*
-    If there is no such symbol, we default without warning to the
-    numbered style.
-   */
+    If there is no such symbol, we default to the numbered style.
+    (Here really with a warning!)
+  */
+  me->warning (_f ("time signature symbol `%s' not found; "
+                  "reverting to numbered style", char_name));
   return numbered_time_signature (me, n, d);
 }
 
@@ -124,21 +133,20 @@ ADD_INTERFACE (Time_signature,"time-signature-interface",
         4/4 and 2/2 are typeset as C and struck C, respectively.  All
         other time signatures are written with two digits.
 
-      @item @code{old}
+      @item @code{neo_mensural}
+        2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are
+        typeset with neo-mensural style mensuration marks.  All other time
+        signatures are written with two digits.
+
+      @item @code{mensural}
         2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are
-        typeset with old-style mensuration marks.  All other time
+        typeset with mensural style mensuration marks.  All other time
         signatures are written with two digits.
 
       @item @code{1xxx}
         All time signatures are typeset with a single
         digit, e.g. 3/2 is written as 3. (Any symbol starting
        with the digit @code{1} will do.)
-
-      @item @code{C}@var{M}@code{/}@var{N}, 
-@code{old}@var{M}@code{/}@var{N} or
-      @code{old6/8alt}
-        Tells LilyPond to use a specific symbol as time signature, 
-       regardless of the actual time signature.
     @end table
 
 See also the test-file @file{input/test/time.ly}.
index 7db483d56af11ed7c37022e2923f8a6e98c7b7a6..14a4fe5404eefcb4baedc78924d88ca97be8696e 100644 (file)
@@ -50,7 +50,11 @@ Translator_def::Translator_def ()
   end_consists_name_list_ = SCM_EOL;
   property_ops_ = SCM_EOL;
   type_name_ = SCM_EOL;
+
+  smobify_self();
+  
 }
+
 Translator_def::~Translator_def ()
 {
 }
@@ -58,11 +62,21 @@ Translator_def::~Translator_def ()
 Translator_def::Translator_def (Translator_def const & s)
   : Input (s)
 {
+  type_aliases_ = SCM_EOL;
+  translator_group_type_ = SCM_EOL;
+  accepts_name_list_ = SCM_EOL;   
+  consists_name_list_ = SCM_EOL;
+  end_consists_name_list_ = SCM_EOL;
+  property_ops_ = SCM_EOL;
+  type_name_ = SCM_EOL;
+
+  
+  smobify_self();
   consists_name_list_ = scm_list_copy (s.consists_name_list_);
   end_consists_name_list_ = scm_list_copy (s.end_consists_name_list_);
   accepts_name_list_ = scm_list_copy (s.accepts_name_list_);
   property_ops_ = scm_list_copy (s.property_ops_);
-  type_aliases_ = s.type_aliases_;
+  type_aliases_ = scm_list_copy (s.type_aliases_);
   translator_group_type_ = s.translator_group_type_;
   type_name_ = s.type_name_;
 }
@@ -275,14 +289,16 @@ SCM
 Translator_def::clone_scm () const
 {
   Translator_def * t = new Translator_def (*this);
-  return t->unprotected_smobify_self ();
+  scm_gc_unprotect_object (t->self_scm());
+  return t->self_scm();
 }
 
 SCM
 Translator_def::make_scm ()
 {
   Translator_def* t = new Translator_def;
-  return t->unprotected_smobify_self ();
+  scm_gc_unprotect_object (t->self_scm());
+  return t->self_scm();
 }
 
 void
index 3b233d7f05124983cede24922a2857e601fbe50f..dd4ea8c236e5f3425665d126cb9dd0da4d1f139c 100644 (file)
@@ -32,6 +32,7 @@ Translator::init ()
 
 Translator::Translator ()
 {
+  self_scm_ = SCM_EOL;
   init ();
   output_def_ = 0;
   smobify_self ();
@@ -39,6 +40,7 @@ Translator::Translator ()
 
 Translator::Translator (Translator const &s)
 {
+  self_scm_ = SCM_EOL;
   init ();
   output_def_ = s.output_def_;
   type_string_ = s.type_string_;
index b00c319c23f961f5897b57d115e67e53d1fa5e0a..bb61ecbce4f5f0cb01a7d64b23eb2f42c275b48c 100644 (file)
@@ -134,6 +134,14 @@ Tuplet_bracket::brew_molecule (SCM smob)
     number_visibility = !par_beam;
        
   Grob * commonx = columns[0]->common_refpoint (columns.top (),X_AXIS);
+
+  /*
+    Tuplet brackets are normally not broken, but we shouldn't crash if
+    they are.
+   */
+  commonx = commonx->common_refpoint (sp->get_bound(LEFT), X_AXIS);
+  commonx = commonx->common_refpoint (sp->get_bound(RIGHT), X_AXIS);  
+  
   Direction dir = Directional_element_interface::get (me);
 
   Grob * lgr = get_x_bound_grob (columns[0], dir);
@@ -308,7 +316,7 @@ Tuplet_bracket::calc_position_and_height (Grob*me,Real *offset, Real * dy)
     {
       Real notey = columns[i]->extent (commony, Y_AXIS)[dir] 
        - me->relative_coordinate (commony, Y_AXIS);
-
+      
       Real x = columns[i]->relative_coordinate (commonx, X_AXIS) - x0;
       Real tuplety =  *dy * x * factor;
 
@@ -322,11 +330,12 @@ Tuplet_bracket::calc_position_and_height (Grob*me,Real *offset, Real * dy)
   
   /*
     horizontal brackets should not collide with staff lines.
+    
    */
-  if (*dy == 0)
+  Real ss= Staff_symbol_referencer::staff_space (me);
+  if (*dy == 0 && fabs (*offset) <  ss * Staff_symbol_referencer::staff_radius (me))
     {
       // quantize, then do collision check.
-      Real ss= Staff_symbol_referencer::staff_space (me);
       *offset *= 2 / ss;
       
       *offset = rint (*offset);
index 69bc3fbdc74bcc879fa43a9098812b804dbf4b07..f4f56af6e4441ccc7bbec9f6be8084822785e362 100644 (file)
@@ -15,7 +15,7 @@ source file of the GNU LilyPond music typesetter
 class Unfolded_repeat_iterator : public Sequential_iterator
 {
 public:
-  static  SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   VIRTUAL_COPY_CONS (Music_iterator);
 protected:
   virtual SCM get_music_list () const;
@@ -56,7 +56,7 @@ Unfolded_repeat_iterator::get_music_list () const
 class Volta_repeat_iterator : public Sequential_iterator
 {
 public:
-  static  SCM constructor_cxx_function;
+  DECLARE_SCHEME_CALLBACK(constructor, ());
   VIRTUAL_COPY_CONS (Music_iterator);
   Volta_repeat_iterator();
 
diff --git a/lily/virtual-font-metric.cc b/lily/virtual-font-metric.cc
new file mode 100644 (file)
index 0000000..276a245
--- /dev/null
@@ -0,0 +1,106 @@
+/*   
+  virtual-font-metric.cc --  implement Virtual_font_metric
+
+source file of the GNU LilyPond music typesetter
+
+(c) 2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "virtual-font-metric.hh"
+#include "all-font-metrics.hh"
+#include "main.hh"
+#include "molecule.hh"
+#include "paper-def.hh"
+
+
+/*
+  passing DEF is ughish. Should move into paperdef?
+  */
+Virtual_font_metric::Virtual_font_metric (SCM name_list, 
+                                         Real mag,Paper_def*def)
+{
+  font_list_ = SCM_EOL;
+  SCM *tail = &font_list_;
+  for (SCM s = name_list; gh_pair_p (s); s = gh_cdr (s))
+    {
+      SCM nm = gh_car (s);
+
+      Font_metric *fm = def->find_font (nm, mag);
+      *tail =  scm_cons (fm->self_scm(),SCM_EOL);
+      tail = SCM_CDRLOC (*tail);
+    }
+}
+
+void
+Virtual_font_metric::derived_mark()const
+{
+  scm_gc_mark (font_list_);
+}
+
+int
+Virtual_font_metric::count () const
+{
+  int k = 0;
+  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
+    {
+      k+= unsmob_metrics (gh_car (s))->count ();
+    }
+
+  return k;
+}
+
+Molecule
+Virtual_font_metric::find_by_name (String glyph) const
+{
+  Molecule m;  
+  for (SCM s = font_list_; m.empty_b () && gh_pair_p (s); s = gh_cdr (s))
+    {
+      m = unsmob_metrics (gh_car (s))->find_by_name (glyph);
+    }
+
+  return m;
+}
+  
+  
+
+Box
+Virtual_font_metric::get_char (int code)  const
+{
+  int last_k = 0;
+  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
+    {
+      Font_metric* fm = unsmob_metrics (gh_car (s));
+      int k = last_k + fm->count ();
+      if (last_k <= code && code < k)
+       {
+         return fm->get_char (code - last_k);
+       }
+      last_k = k;
+    }
+
+  
+  return Box();
+}
+  
+  
+Molecule
+Virtual_font_metric::get_char_molecule (int code)  const
+{
+  Molecule  m ;  
+  int last_k = 0;
+  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
+    {
+      Font_metric* fm = unsmob_metrics (gh_car (s));
+      int k = last_k + fm->count ();
+      if (last_k <= code && code < k)
+       {
+         m = fm->get_char_molecule (code - last_k);
+         break; 
+       }
+      last_k = k;
+    }
+
+  return m;
+}
+  
diff --git a/ly/a3-init.ly b/ly/a3-init.ly
new file mode 100644 (file)
index 0000000..4685ced
--- /dev/null
@@ -0,0 +1,5 @@
+\version "1.5.68"
+% a3-init.ly
+
+hsize = 296.9 \mm
+vsize = 420.0 \mm
index 6684c0bc523112bef65a795b380b1ce9b4025619..c195c75f972e4afbfe2b43fb0f9249e48dc58f11 100644 (file)
@@ -134,6 +134,7 @@ VoiceContext = \translator {
        \consists "Arpeggio_engraver"
        \consists "Multi_measure_rest_engraver"
        \consists "Text_spanner_engraver"
+       \consists "Grob_pq_engraver"
 
        \consists "Ligature_bracket_engraver"
        \consists "Breathing_sign_engraver"
@@ -346,7 +347,13 @@ ScoreContext = \translator {
        
        \consists "Repeat_acknowledge_engraver"
        \consists "Staff_collecting_engraver"
+
+       % move the alias along with the engraver.
+
+       %% TODO? add this alias from Timing_engraver::initialize() ? 
        \consists "Timing_engraver"
+       \alias "Timing"
+       
        \consists "Output_property_engraver"
        \consists "System_start_delimiter_engraver"
        \consists "Mark_engraver"       
@@ -390,6 +397,7 @@ ScoreContext = \translator {
        automaticMelismata = ##t
        
        defaultBarType = #"|"
+       barNumberVisibility = #default-bar-number-visibility
 
        explicitClefVisibility = #all-visible
        explicitKeySignatureVisibility = #all-visible
@@ -487,6 +495,10 @@ TabStaffContext = \translator {
       % 6 strings
       StaffSymbol \override #'line-count  = #6
       StaffSymbol \override #'staff-space = #1.5
+
+      stringOneTopmost = ##t
+      highStringOne = ##t
+
       % One may change the strings tuning as following :
       % The lenght of the list must be equal to the number of string
       %TabNoteHead \override #'string-tunings = #'(10 10 10 10 10 10)
@@ -495,12 +507,13 @@ TabStaffContext = \translator {
       clefGlyph = #"clefs-tab"
       clefPosition = #0
       
-      % Don't draw stems over the tabature figures !
+      % Don't draw stems over the tablature figures !
       Stem \override #'avoid-note-head = ##t
       
       % No accidental in tablature !
       \remove Accidental_engraver
-      stringTunings   = #'(-20 -15 -10 -5 -1 4)
+      \remove Key_engraver
+      stringTunings   = #guitar-tunings
       tablatureFormat = #fret-number-tablature-format
 }
    
index 3bc296fab1187716caa855f8c58f65ea417d49b9..0735bce8f11ed7920ad47a857664cd351704fe66 100644 (file)
@@ -106,6 +106,7 @@ ScoreContext = \translator {
        \type "Score_performer"
 
        \name Score
+       \alias Timing
        instrument = #"bright acoustic"
        \accepts Staff
        \accepts GrandStaff
@@ -115,7 +116,7 @@ ScoreContext = \translator {
        \accepts ChoirStaff
        \accepts RhythmicStaff
        \accepts ChordNames
-
+       \alias "Timing"
        \consists "Timing_translator"
        \consists "Swallow_performer"
        
index 0afb1888fbe6ae0a63417332a3dabf5228d06f97..003d54f2de663a7fa44e52572cc15862542c5129 100644 (file)
@@ -66,10 +66,10 @@ tupletBoth = {
 
 
 
-cadenzaOn = \property Score.timing = ##f
+cadenzaOn = \property Timing.timing = ##f
 cadenzaOff = {
-  \property Score.timing = ##t
-  \property Score.measurePosition = #(make-moment 0 1)
+  \property Timing.timing = ##t
+  \property Timing.measurePosition = #(make-moment 0 1)
 }
 
 newpage = {
index e81890bf2da83a707bad08164fca5c3acf15e5c1..b41e4846f0c37755aa969dbe0c2d17b8e2b22664 100644 (file)
@@ -14,10 +14,4 @@ $(outdir)/%: %.in
 include $(depth)/make/substitute.make
 
 
-# HUH???
-$(outdir)/%.hh: $(doc-dir)/%.in
-       rm -f $@
-       echo '_(' > $@
-       cat $< | $(sed-quotes) | $(sed-newline) | $(sed-quote-line) >> $@
-       echo ');' >> $@
 
index 516f519719e86875aa285eb3e97053bf530db47b..7d0d40cd6f1b9d50312799cd1698c9ea614b0902 100644 (file)
@@ -46,8 +46,7 @@ LILYPOND_BOOK = $(script-dir)/lilypond-book.py
 LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(outdir) -I$(input-dir) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ -I $(input-dir)/tutorial/ -I $(builddir)/mf/$(outconfbase)/  -I $(builddir)/mf/out/
 LY2DVI = $(script-dir)/ly2dvi.py
 LYS_TO_TELY = $(buildscript-dir)/lys-to-tely.py
-PS_TO_GIFS = $(buildscript-dir)/ps-to-gifs.sh
-PS_TO_PNGS = $(buildscript-dir)/ps-to-pngs.sh
+
 
 else
 ### some versions apparently choke on $(message)
@@ -60,8 +59,6 @@ LILYPOND_BOOK = $(shell $(SHELL) -c 'type -p lilypond-book')
 LILYPOND_BOOK_INCLUDES = -I. -I.. -I$(outdir)
 LY2DVI = $(shell $(SHELL) -c 'type -p ly2dvi')
 LYS_TO_TELY = $(shell $(SHELL) -c 'type -p lys-to-tely')
-PS_TO_GIFS = $(shell $(SHELL) -c 'type -p ps-to-gifs')
-PS_TO_PNGS = $(shell $(SHELL) -c 'type -p ps-to-pngs')
 
 endif
 
index 71bf18e624d504b7328f758a8fb114373f0e1445..8b8d1b9577289f54744bccf54ac58734f3cbdad0 100644 (file)
@@ -2,14 +2,16 @@ Begin3
 Title: LilyPond
 Version: @TOPLEVEL_VERSION@
 Entered-date: @DATE@
-Description: @BLURB@
+Description: LilyPond  is a music  typesetter.  It  produces beautiful  sheet music
+using  a description  file as  input.   LilyPond  is  part of  the  GNU
+Project.
 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 @package@-@TOPLEVEL_VERSION@.tar.gz 
-Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Maintained-by: hanwen@cs.uu.nl (Han-Wen Nienhuys)
+Primary-site: ftp.lilypond.org /pub/LilyPond/v1.6/
+       1500k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/v1.6/
+       1500k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Copying-policy: GPL
 End
index 4738a845e968f5a8615b70153aca99598a9f08f4..43edd6971d3d430599635317af4906a8547f8071 100644 (file)
@@ -1,19 +1,25 @@
+# Does info really work?
+%define info yes
+
 %define name lilypond
 %define version @TOPLEVEL_VERSION@
 %define release 1mdk
 
-Name: %{name}
-Summary: A program for printing sheet music.
-Version: %{version}
-Release: %{release}
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-%{version}.tar.gz
+Summary:       A program for printing sheet music.
+Name:          %{name}
+Version:       %{version}
+Release:       %{release}
+License:       GPL
+Group:         Publishing
+URL:           http://www.lilypond.org/
+Source0:       ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-%{version}.tar.gz
 ## Patch0: lilypond-GNUmakefile.in.patch.bz2
-License: GPL
-Group: Publishing
-URL: http://www.lilypond.org/
-BuildRoot: %{_tmppath}/%{name}-buildroot
-BuildRequires: guile guile-devel
-Requires: tetex
+Source1:       %name-16x16.png.tar.bz2
+Source2:       %name-32x32.png.tar.bz2
+Source3:       %name-48x48.png.tar.bz2
+BuildRoot:     %{_tmppath}/%{name}-buildroot
+BuildRequires: guile guile-devel
+Requires:      tetex
 
 %description
 LilyPond is a music typesetter.  It produces beautiful sheet music using a
@@ -29,22 +35,23 @@ http://www.mutopiaproject.org for details).
 If you are new to lilypond, you will almost certainly want to install the
 "lilypond-extras" package in addition to the "lilypond" package.
  
-You may also wish to investigate the "denemo" package, which provides a
-graphical front end to lilypond.
-
-See the file README.first for more information.
+## You may also wish to investigate the "denemo" package, which provides a
+## graphical front end to lilypond.
+## 
+## See the file README.first for more information.
 
-
-%package extras
+%package documentation
 Summary: LilyPond documentation, examples and Mutopia files.
 Group: Publishing
 Requires: lilypond
 
-%description extras
+%description documentation
 The documentation of LilyPond, both in HTML and PostScript, along with
 example input files and the files from the Mutopia project.
 
 %prep
+rm -rf $RPM_BUILD_ROOT
+
 %setup -a 1
 ## % patch0 -b .orig
 
@@ -52,9 +59,16 @@ example input files and the files from the Mutopia project.
 # DO NOT use % { configure } , it hardcodes all paths, runs libtool,
 # so we can't do make prefix=/tmp/ install.
 # -- not sure what this comment means; it's a relic from the PPC spec file -- mbrown@fensystems.co.uk
-./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --disable-optimise --enable-shared
-make
-make web-doc
+##./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --disable-optimising --enable-shared
+## Add options if needed
+./configure --disable-checking --prefix=%{_prefix} --enable-optimising
+make MAKE_PFA_FILES=1 all
+
+# make info
+make -C Documentation
+
+# make  html
+make web-doc top-web 
 
 %install
 
@@ -64,83 +78,146 @@ RPM_DOC_ROOT=$RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
 rm -rf $RPM_DOC_ROOT
 mkdir -p $RPM_DOC_ROOT
 
-make prefix="$RPM_BUILD_ROOT%{_prefix}" install
-%{find_lang} %{name}
+strip lily/out/lilypond 
+make prefix="$RPM_BUILD_ROOT%{_prefix}" MAKE_PFA_FILES=1 all install
+# %{find_lang} %{name}
+
+%if info=="yes"
+gzip -9fn $RPM_BUILD_ROOT%{_prefix}/info/*
+%endif
 
 # Move info and man files into correct locations
-mv $RPM_BUILD_ROOT/usr/info $RPM_BUILD_ROOT%{_infodir}
-mv $RPM_BUILD_ROOT/usr/man $RPM_BUILD_ROOT%{_mandir}
+mv $RPM_BUILD_ROOT/usr/info $RPM_BUILD_ROOT%{_infodir}
+mv $RPM_BUILD_ROOT/usr/man $RPM_BUILD_ROOT%{_mandir}
 
-# Move TeX font files into system TeX tree locations
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/texmf/fonts/{afm,source,tfm}
-mv $RPM_BUILD_ROOT%{_datadir}/lilypond/afm $RPM_BUILD_ROOT%{_datadir}/texmf/fonts/afm/lilypond
-mv $RPM_BUILD_ROOT%{_datadir}/lilypond/mf $RPM_BUILD_ROOT%{_datadir}/texmf/fonts/source/lilypond
-mv $RPM_BUILD_ROOT%{_datadir}/lilypond/tfm $RPM_BUILD_ROOT%{_datadir}/texmf/fonts/tfm/lilypond
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/texmf/tex
-mv $RPM_BUILD_ROOT%{_datadir}/lilypond/tex $RPM_BUILD_ROOT%{_datadir}/texmf/tex/lilypond
+mkdir -p $RPM_BUILD_ROOT/usr/share/emacs/site-lisp/site-start.d
+install -m 644 lilypond-mode.el lilypond-font-lock.el lilypond-indent.el $RPM_BUILD_ROOT/usr/share/emacs/site-lisp/
+install -m 644 lilypond-init.el $RPM_BUILD_ROOT/usr/share/emacs/site-lisp/site-start.d
 
-# Copy emacs mode files into %{_datadir}/lilypond/emacs
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/lilypond/emacs
-cp *.el $RPM_BUILD_ROOT%{_datadir}/lilypond/emacs/
+gzip -9fn $RPM_BUILD_ROOT%{_prefix}/man/man1/*
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d
+cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh
+cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh
 
-# Create documentation tree in %{_docdir}
-mkdir -p $RPM_DOC_ROOT/HTML
-tar -C $RPM_DOC_ROOT/HTML -xzf out/web.tar.gz
-ln -s HTML/input $RPM_DOC_ROOT/Examples
-ln -s HTML/input/test $RPM_DOC_ROOT/Tricks
 
-mkdir -p $RPM_DOC_ROOT/Printable
-ln -s ../HTML/Documentation/user/out-www/lilypond.ps.gz $RPM_DOC_ROOT/Printable/Manual.ps.gz
-ln -s ../HTML/Documentation/user/out-www/glossary.ps.gz $RPM_DOC_ROOT/Printable/Glossary.ps.gz
-cp AUTHORS.txt CHANGES COPYING DEDICATION FAQ.txt NEWS README.txt VERSION README.mandrake $RPM_DOC_ROOT/README.first
+# again, make sure that main package installs even if doco fails
+mkdir -p web/out
+tar -C web -xzf out/web.tar.gz 
+
+# Create documentation tree in %{_docdir}
+## mkdir -p $RPM_DOC_ROOT/HTML
+## tar -C $RPM_DOC_ROOT/HTML -xzf out/web.tar.gz
+## ln -s HTML/input $RPM_DOC_ROOT/Examples
+## ln -s HTML/input/test $RPM_DOC_ROOT/Tricks
+
+## mkdir -p $RPM_DOC_ROOT/Printable
+## ln -s ../HTML/Documentation/user/out-www/lilypond.ps.gz $RPM_DOC_ROOT/Printable/Manual.ps.gz
+## ln -s ../HTML/Documentation/user/out-www/glossary.ps.gz $RPM_DOC_ROOT/Printable/Glossary.ps.gz
+## cp AUTHORS.txt COPYING DEDICATION NEWS README.txt VERSION $RPM_DOC_ROOT/README.first
+
+# Menu
+# Every entry must be changed according package specifications
+# Pay attention to "section" "command" and "longtitle"
+
+mkdir -p $RPM_BUILD_ROOT%{_menudir}
+cat >$RPM_BUILD_ROOT%{_menudir}/%{name} <<EOF
+?package(%name): command="%{_bindir}/%{name}" needs="X11" \
+icon="%{name}.png" section="Publishing" \
+title="%{name}" longtitle="%{name}"
+EOF
+  
+# icon
+install -d $RPM_BUILD_ROOT/%{_miconsdir}
+install -d $RPM_BUILD_ROOT/%{_iconsdir}
+install -d $RPM_BUILD_ROOT/%{_liconsdir}
+bzcat %{SOURCE1} > $RPM_BUILD_ROOT/%{_miconsdir}/%{name}.png
+bzcat %{SOURCE2} > $RPM_BUILD_ROOT/%{_iconsdir}/%{name}.png
+bzcat %{SOURCE3} > $RPM_BUILD_ROOT/%{_liconsdir}/%{name}png
 
 %post
-touch /tmp/.lilypond-install
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm' -print'` /tmp/.lilypond-install
-/usr/bin/mktexlsr
-%_install_info lilypond.info
-%_install_info lilypond-internals.info
+%{update_menus}
 
-echo 'Please logout first before using LilyPond.'
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm' -print` /tmp/.lilypond-install
 
+%if info=="yes"
+/sbin/install-info %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir 
+%endif
 
 %preun
-%_remove_install_info lilypond.info
-%_remove_install_info lilypond-internals.info
+
+%if info=="yes"
+if [ $1 = 0 ]; then
+    /sbin/install-info --delete %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir 
+fi
+%endif
+
+rm -f /usr/share/lilypond/%{version}/fonts/type1/fonts.dir
+chkfontpath --remove=/usr/share/lilypond/%{version}/fonts/type1/
 
 %postun
-/usr/bin/mktexlsr
-
-
-%files -f %{name}.lang
-%defattr(-,root,root,0755)
-%{_bindir}/*
-%{_datadir}/lilypond/
-%{_datadir}/texmf/fonts/afm/lilypond
-%{_datadir}/texmf/fonts/source/lilypond
-%{_datadir}/texmf/fonts/tfm/lilypond
-%{_datadir}/texmf/tex/lilypond
-
-%doc %{_infodir}/*
-%doc %{_mandir}/man1/*
-%doc %{_docdir}/%{name}-%{version}/AUTHORS.txt
-%doc %{_docdir}/%{name}-%{version}/CHANGES
-%doc %{_docdir}/%{name}-%{version}/COPYING
-%doc %{_docdir}/%{name}-%{version}/DEDICATION
-%doc %{_docdir}/%{name}-%{version}/FAQ.txt
-%doc %{_docdir}/%{name}-%{version}/NEWS
-%doc %{_docdir}/%{name}-%{version}/README.txt
-%doc %{_docdir}/%{name}-%{version}/VERSION
-%doc %{_docdir}/%{name}-%{version}/README.first
-
-%files extras
-%defattr(-,root,root,0755)
-%doc %{_docdir}/%{name}-%{version}/HTML
-%doc %{_docdir}/%{name}-%{version}/Mutopia
-%doc %{_docdir}/%{name}-%{version}/Printable
-%doc %{_docdir}/%{name}-%{version}/Tricks
-%doc %{_docdir}/%{name}-%{version}/Examples
+%{clean_menus}
+
+%clean
+## This section is meant to clean the build directory tree, $RPM_BUILD_ROOT
+rm -rf $RPM_BUILD_ROOT
 
+## %files -f %{name}.lang
+%files
+# The special tag %doc designates files being part of the documentation of the
+# package. The files so-called will be placed in /usr/doc/lilypond-%{version}/
+%doc COPYING README.txt INSTALL.txt DEDICATION NEWS AUTHORS.txt
+%{_datadir}/emacs/site-lisp/lilypond-*
+# is the following really started during startup of emacs?
+%{_datadir}/emacs/site-lisp/site-start.d/lilypond-*
+
+%{_prefix}/bin/abc2ly
+%{_prefix}/bin/as2text
+%{_prefix}/bin/convert-ly
+%{_prefix}/bin/etf2ly
+%{_prefix}/bin/lilypond
+%{_prefix}/bin/ly2dvi
+%{_prefix}/bin/midi2ly
+%{_prefix}/bin/lilypond-book
+%{_prefix}/bin/mup2ly
+%{_prefix}/bin/musedata2ly
+%{_prefix}/bin/pmx2ly
+
+%if info=="yes"
+%{_prefix}/info/lilypond.info.gz
+%{_prefix}/info/lilypond-internals.info.gz
+%endif
+
+%{_prefix}/man/man1/abc2ly.1.bz2
+%{_prefix}/man/man1/as2text.1.bz2
+%{_prefix}/man/man1/convert-ly.1.bz2
+%{_prefix}/man/man1/etf2ly.1.bz2
+%{_prefix}/man/man1/lilypond.1.bz2
+%{_prefix}/man/man1/ly2dvi.1.bz2
+%{_prefix}/man/man1/midi2ly.1.bz2
+%{_prefix}/man/man1/lilypond-book.1.bz2
+%{_prefix}/man/man1/musedata2ly.1.bz2
+%{_prefix}/man/man1/mup2ly.1.bz2
+%{_prefix}/man/man1/pmx2ly.1.bz2
+
+%{_prefix}/share/%{name}/%{version}/
+%{_prefix}/share/locale/*/LC_MESSAGES/lilypond.mo
+%{_prefix}/../etc/profile.d/lilypond.*
+%_bindir/*
+%_menudir/*
+%_miconsdir/*
+%_iconsdir/*
+%_liconsdir/*
+
+%files documentation
+
+%doc web/
+
+%changelog
+* Fri Aug 30 2002 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.6.0-1mdk
+- Adapted from lilypond.redhat.skel and skeleton found in Mandrake's RPM-docs.
+- TODO: info (?) and dependencies.
 
 %changelog
 * Fri Jun 01 2001 Lenny Cartier <lenny@mandrakesoft.com> 1.4.2-1mdk
index 763d1f0c8a179a965ea9b54ffe225918c17dff25..c7f0a50fcccc70b7e44002d3b2ca440ccceaed9f 100644 (file)
@@ -26,7 +26,7 @@ Group: Applications/Publishing
 
 %description documentation
 
-The documentation of LilyPond, both in HTML and PostScript.
+The documentation and example files of LilyPond.
 
 %prep
 %setup
@@ -39,7 +39,7 @@ The documentation of LilyPond, both in HTML and PostScript.
 # In fact, do not take out the spaces between % and { in the above comment,
 # because RPM will gladly do a substitution anyway.
 
-./configure --disable-checking --prefix=%{_prefix} --enable-optimise
+./configure --disable-checking --prefix=%{_prefix} --enable-optimising
 
 make MAKE_PFA_FILES=1 all
 
index c5e68f391e2594e853dbe3921c55a3f2e41a2a6f..b5c4cb4017e0cb903aceb95fa367de169786fba2 100644 (file)
@@ -92,7 +92,7 @@ The documentation of LilyPond, both in HTML and PostScript.
 # In fact, do not take out the spaces between % and { , because RPM will gladly
 # do a substitution anyway.
 
-CFLAGS="$RPM_OPT_FLAGS" ./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --enable-optimise --enable-shared
+CFLAGS="$RPM_OPT_FLAGS" ./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --enable-optimising --enable-shared
 
 make LDFLAGS=-s "CFLAGS=$RPM_OPT_FLAGS" all
 
index 4d5590f2dadd23755dfa2454141b6a743c560ffd..dd3f297c4f5cea5c0d14172f894085c5121b9739 100644 (file)
@@ -4,7 +4,7 @@
 
 
 $(outdir)/%.latex: %.doc
-       rm -f $@
+       -chmod a+w $@
        $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES)\
 $(LILYPOND_BOOK_FLAGS) --verbose --dependencies --outdir=$(outdir) $<
        chmod -w $@
@@ -12,22 +12,25 @@ $(LILYPOND_BOOK_FLAGS) --verbose --dependencies --outdir=$(outdir) $<
 # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
 # it is not, for --srcdir builds
 $(outdir)/%.texi: %.tely
-       rm -f $@
+       -chmod a+w $@
        set|egrep '(TEX|LILY)'  # ugh, what's this?
        $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --verbose $(LILYPOND_BOOK_FLAGS) $<
        chmod -w $@
 
 $(outdir)/%.texi: $(outdir)/%.tely
-       rm -f $@
-       set|egrep '(TEX|LILY)'  # ugh, what's this?
+       -chmod a+w $@
+# debugging:
+#      set|egrep '(TEX|LILY)'
        $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --verbose $(LILYPOND_BOOK_FLAGS) $<
-       rm -f $<
+#
+# DON'T REMOVE SOURCE FILES, otherwise the .TEXI ALWAYS OUT OF DATE.
+#      rm -f $<
        chmod -w $@
 
 # nexi: no-lily texi
 # for plain info doco: don't run lily
 $(outdir)/%.nexi: %.tely
-       rm -f $@
+       -chmod a+w $@
        $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --no-lily $(LILYPOND_BOOK_FLAGS) $<
        mv $(@D)/$(*F).texi $@
        chmod -w $@
index 6c7f72bdf2b66e9ca2e5b8e5d50c194fb92baad9..b41e4c7892223087414aa9d8f6656328d999a539 100644 (file)
@@ -1,3 +1,6 @@
 
+
+
 $(outdir)/$(NAME).tely: $(LY_FILES)
        $(PYTHON) ../../buildscripts/lys-to-tely.py --name=$(outdir)/$(NAME) --title="$(TITLE)" $(LY_FILES)
+
index 85ad7707676ba605fda8561e50340c1815efc925..8320ee47cc71917f8d463c46e077442436dbecde 100644 (file)
@@ -1,12 +1,8 @@
 
 
-$(outdir)/%.gif: $(outdir)/%.ps
-       sh $(PS_TO_GIFS) $<
-       -mv $(name-stem)-page*.gif $(outdir)/
-       ln -s $(name-stem)-page1.gif $@
-
 $(outdir)/%.png: $(outdir)/%.ps
-       sh $(PS_TO_PNGS) $<
+       gs -sDEVICE=pnggray -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="$(name-stem)-page%d.png" -r90 -dNOPAUSE $< -c quit
+
        -mv $(name-stem)-page*.png $(outdir)/
        ln -s $(name-stem)-page1.png $@
 
index 0144f77770798721c17fafb9d9fcececb129ff79..8d1574848d5698bd83d3cbd23c7cc50d9c0d0ff6 100644 (file)
@@ -56,7 +56,9 @@ INSTALLATION_OUT_FILES3=$(TFM_FILES)
 # making pfas takes a lot of CPU time. Let's skip it for now.
 #MAKE_PFA_FILES=1
 
-PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) $(outdir)/cmbxti8.pfa
+
+SAUTER_FONT_FILES=cmbxti7 cmbxti8 cmbxti12  cmbxti14 cmcsc7 cmcsc12 cmtt17 cmbx14 cmbx17
+PFA_FILES= $(addprefix $(outdir)/, $(addsuffix .pfa, $(SAUTER_FONT_FILES)) $(FONT_FILES:.mf=.pfa)) 
 
 ifdef MAKE_PFA_FILES
 ALL_GEN_FILES += $(PFA_FILES) $(outdir)/lilypond.map $(outdir)/fonts.scale
@@ -69,7 +71,7 @@ INSTALLATION_OUT_FILES5=$(outdir)/lilypond.map
 endif
 
 $(outdir)/lilypond.map: 
-       echo $(FONT_FILES:.mf=) | tr ' ' '\n' | \
+       echo $(notdir $(PFA_FILES:.pfa=)) | tr ' ' '\n' | \
                sed 's/\(.*\)/\1 \1 <\1.pfa/' > $@
 
 $(outdir)/fonts.scale:
@@ -89,9 +91,9 @@ local-clean:
        rm -f mfplain.mem mfplain.log 
        rm -f *.tfm *.log
 
-pfa: $(PFA_FILES)  
+pfa: $(PFA_FILES)   $(outdir)/lilypond.map $(outdir)/fonts.scale
 
 # needed for web documentation
-$(outdir)/cmbxti8.pfa:
-       $(MFTRACE)  -I $(outdir)/ --pfa --simplify --keep-trying cmbxti8
-       mv cmbxti8.pfa $(outdir)/
+$(addprefix $(outdir)/, $(SAUTER_FONT_FILES:=.pfa)):
+       $(foreach i, $(SAUTER_FONT_FILES), \
+               $(MFTRACE) -I $(outdir)/ --pfa --simplify --keep-trying $(i) && mv $(i).pfa $(outdir)/ && ) true
index 4549a17f35a2f18e5be2beca7553b8142042829c..4da3607f7ff46678e40f9c0d2d5c4eea09c9b163 100644 (file)
@@ -95,17 +95,23 @@ fet_endchar;
 
 define_pixels(breve_rest_y, breve_rest_x, multi_rest_x, multi_beam_height);
 
+fet_beginchar("maxima rest", "-3", "maximarest");
+       set_char_box(0, 3 breve_rest_x#, breve_rest_y#, breve_rest_y#);
+       draw_block ((0,-floor (breve_rest_y)), (breve_rest_x, floor (breve_rest_y)));
+       addto currentpicture also currentpicture shifted (2 breve_rest_x, 0);
+fet_endchar;
 
 fet_beginchar("longa rest", "-2", "longarest");
-       set_char_box(0, breve_rest_x#, breve_rest_y#, breve_rest_y#);
-       draw_block ((0,-floor (breve_rest_y)), (breve_rest_x, floor (breve_rest_y)));
+       set_char_box(0, breve_rest_x#, breve_rest_y#, breve_rest_y#);
+       draw_block ((0,-floor (breve_rest_y)), (breve_rest_x, floor (breve_rest_y)));
 fet_endchar;
 
 fet_beginchar("breve rest", "-1", "breverest");
-       set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
-       draw_block ((0,0), (breve_rest_x, floor (breve_rest_y)));
+       set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
+       draw_block ((0,0), (breve_rest_x, floor (breve_rest_y)));
 fet_endchar;
 
+
 tracingvariables := 1;
 
 fet_beginchar("Quarter rest","2","quartrest");
index 2b35a7eb62997c1336b2e90f05ec90e6fa8820d0..49c964d93752faa5efd3215f659da63cd67e077c 100644 (file)
@@ -486,50 +486,50 @@ def inclinatum_char(expr verbose_name, internal_name, mudela_name,
 enddef;
 
 % punctum
-punctum_char("Ed. Vat. punctum", "0vaticana_punctum", "vatpunctumhead",
+punctum_char("Ed. Vat. punctum", "vaticana_punctum", "vatpunctumhead",
             false, false, false, false, false,
             false, false, false, false, 1.0);
 
 % punctum cavum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. punctum cavum", "0vaticana_punctum_cavum",
+punctum_char("Ed. Vat. punctum cavum", "vaticana_punctum_cavum",
             "vatpunctumcavumhead",
             false, false, false, true, false,
             false, false, false, false, 1.0);
 
 % linea punctum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. linea punctum", "0vaticana_linea_punctum",
+punctum_char("Ed. Vat. linea punctum", "vaticana_linea_punctum",
             "vatlineapunctumhead",
             false, false, true, false, false,
             false, false, false, false, 1.0);
 
 % linea punctum cavum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. linea punctum cavum", "0vaticana_linea_punctum_cavum",
+punctum_char("Ed. Vat. linea punctum cavum", "vaticana_linea_punctum_cavum",
             "vatlineapunctumcavumhead",
             false, false, true, true, false,
             false, false, false, false, 1.0);
 
 % punctum inclinatum
-inclinatum_char("Ed. Vat. inclinatum", "0vaticana_inclinatum",
+inclinatum_char("Ed. Vat. inclinatum", "vaticana_inclinatum",
                "vatinclinatumhead",
                false, false, false);
 
 % virga (i.e. right stemmed punctum)
-punctum_char("Ed. Vat. virga", "0vaticana_virga", "vatvirgahead",
+punctum_char("Ed. Vat. virga", "vaticana_virga", "vatvirgahead",
             false, true, false, false, false,
             false, false, false, false, 1.0);
 
 % left stemmed punctum as used in clivis (flexa) ligature
-punctum_char("Ed. Vat. reverse virga", "0vaticana_rvirga", "vatrvirgahead",
+punctum_char("Ed. Vat. reverse virga", "vaticana_rvirga", "vatrvirgahead",
             true, false, false, false, false,
             false, false, false, false, 1.0);
 
 % pes lower punctum
-punctum_char("Ed. Vat. pes lower punctum", "0vaticana_lpes", "vatlpeshead",
+punctum_char("Ed. Vat. pes lower punctum", "vaticana_lpes", "vatlpeshead",
             false, false, false, false, true,
             false, true, false, false, 1.0);
 
 % pes upper punctum
-punctum_char("Ed. Vat. pes upper punctum", "0vaticana_upes", "vatupeshead",
+punctum_char("Ed. Vat. pes upper punctum", "vaticana_upes", "vatupeshead",
             false, false, false, false, true,
             false, false, false, false, 1.0);
 
@@ -539,29 +539,29 @@ punctum_char("Ed. Vat. pes upper punctum", "0vaticana_upes", "vatupeshead",
 % punctum to avoid collision with the lower punctum note of the pes when
 % the upper punctum sits directly on top of the lower punctum.
 %
-punctum_char("Ed. Vat. var pes upper punctum", "0vaticana_vupes",
+punctum_char("Ed. Vat. var pes upper punctum", "vaticana_vupes",
             "vatvupeshead",
             false, false, false, false, true,
             false, false, false, true, 1.0);
 
 % small punctum as used in epiphonus/cephalicus
-punctum_char("Ed. Vat. plica", "0vaticana_plica", "vatplicahead",
+punctum_char("Ed. Vat. plica", "vaticana_plica", "vatplicahead",
             false, false, false, false, true,
             false, false, false, false, 0.5);
 
 % excentric punctum as used in epiphonus
-punctum_char("Ed. Vat. epiphonus", "0vaticana_epiphonus", "vatepiphonushead",
+punctum_char("Ed. Vat. epiphonus", "vaticana_epiphonus", "vatepiphonushead",
             false, false, false, false, false,
             false, true, true, false, 1.0);
 
 % excentric punctum as used in cephalicus
-punctum_char("Ed. Vat. cephalicus", "0vaticana_cephalicus",
+punctum_char("Ed. Vat. cephalicus", "vaticana_cephalicus",
             "vatcephalicushead",
             false, false, false, false, false,
             false, false, true, false, 1.0);
 
 % quilisma
-fet_beginchar("Ed. Vat. quilisma", "0vaticana_quilisma", "vatquilismahead")
+fet_beginchar("Ed. Vat. quilisma", "vaticana_quilisma", "vatquilismahead")
        save b_h,a_w;
        a_b:=1.54; % b_h*a_b/a_w = wd/ht
        b_h:=0.85;
@@ -589,39 +589,39 @@ fet_beginchar("Ed. Vat. quilisma", "0vaticana_quilisma", "vatquilismahead")
 fet_endchar;
 
 % solesmes punctum inclinatum parvum
-inclinatum_char("Solesmes punctum inclinatum parvum", "0solesmes_incl_parvum",
+inclinatum_char("Solesmes punctum inclinatum parvum", "solesmes_incl_parvum",
                "solinclparvumhead",
                true, false, false);
 
 % solesmes punctum auctum ascendens
-punctum_char("Solesmes punctum auctum ascendens", "0solesmes_auct_asc",
+punctum_char("Solesmes punctum auctum ascendens", "solesmes_auct_asc",
             "solauctaschead",
             false, false, false, false, false,
             true, true, false, false, 1.0);
 
 % solesmes punctum auctum descendens
-punctum_char("Solesmes punctum auctum descendens", "0solesmes_auct_desc",
+punctum_char("Solesmes punctum auctum descendens", "solesmes_auct_desc",
             "solauctdeschead",
             false, false, false, false, false,
             true, false, false, false, 1.0);
 
 % solesmes punctum inclinatum auctum
-inclinatum_char("Solesmes punctum incl. auctum", "0solesmes_incl_auctum",
+inclinatum_char("Solesmes punctum incl. auctum", "solesmes_incl_auctum",
                "solpunctuminclinatumauctumhead",
                false, false, true);
 
 % solesmes stropha
-inclinatum_char("Solesmes stropha", "0solesmes_stropha",
+inclinatum_char("Solesmes stropha", "solesmes_stropha",
                "solstrophahead",
                false, true, false);
 
 % solesmes stropha aucta
-inclinatum_char("Solesmes stropha aucta", "0solesmes_stropha_aucta",
+inclinatum_char("Solesmes stropha aucta", "solesmes_stropha_aucta",
                "solstrophaauctahead",
                false, true, true);
 
 % solesmes oriscus
-fet_beginchar("Solesmes oriscus", "0solesmes_oriscus",
+fet_beginchar("Solesmes oriscus", "solesmes_oriscus",
        "soloriscushead")
        save b_h, a_w;
        a_b := 1.54; % b_h*a_b/a_w = wd/ht
@@ -658,7 +658,7 @@ fet_endchar;
 %
 
 % inclinatum
-fet_beginchar("Ed. Med. inclinatum", "0medicaea_inclinatum",
+fet_beginchar("Ed. Med. inclinatum", "medicaea_inclinatum",
        "medinclinatumhead")
        save b_h, a_w;
        a_b := 1.54; % b_h*a_b/a_w = wd/ht
@@ -724,15 +724,15 @@ def punctum_char (expr verbose_name, internal_name, mudela_name,
 enddef;
 
 % punctum
-punctum_char("Ed. Med. punctum", "0medicaea_punctum", "medpunctumhead",
+punctum_char("Ed. Med. punctum", "medicaea_punctum", "medpunctumhead",
        false, false);
 
 % left up-stemmed punctum
-punctum_char("Ed. Med. reverse virga", "0medicaea_rvirga", "medrvirgahead",
+punctum_char("Ed. Med. reverse virga", "medicaea_rvirga", "medrvirgahead",
        true, false);
 
 % virga (i.e. left down-stemmed punctum)
-punctum_char("Ed. Med. virga", "0medicaea_virga", "medvirgahead",
+punctum_char("Ed. Med. virga", "medicaea_virga", "medvirgahead",
        false, true);
 
 %%%%%%%%
@@ -783,13 +783,13 @@ def punctum_char (expr verbose_name, internal_name, mudela_name,
 enddef;
 
 % punctum
-punctum_char("Hufnagel punctum", "0hufnagel_punctum", "hufpunctumhead", false)
+punctum_char("Hufnagel punctum", "hufnagel_punctum", "hufpunctumhead", false)
 
 % virga
-punctum_char("Hufnagel virga", "0hufnagel_virga", "hufvirgahead", true)
+punctum_char("Hufnagel virga", "hufnagel_virga", "hufvirgahead", true)
 
 % pes lower punctum
-fet_beginchar("Hufnagel pes lower punctum", "0hufnagel_lpes", "huflpeshead")
+fet_beginchar("Hufnagel pes lower punctum", "hufnagel_lpes", "huflpeshead")
        save b_h, a_w;
        a_b := 1.54; % b_h*a_b/a_w = wd/ht
        b_h := 0.85;
index ca3f6df0abba66a9e13608f68bef99d22f7d965d..2e737d14df7156da7669c6f42ec27adb94578dd1 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -1,12 +1,13 @@
 # Danish translation of lilypond
 # Copyright (C) 2001 Free Software Foundation, Inc.
-# Keld Simonsen <keld@dkuug.dk>, 2001.
+# Keld Simonsen <keld@dkuug.dk>, 2001-2002.
+# Reviewed 2001-09-28 Rune Zedeler <rz@daimi.au.dk>
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 1.4.6\n"
+"Project-Id-Version: lilypond 1.6.0\n"
 "POT-Creation-Date: 2002-08-18 17:05+0200\n"
-"PO-Revision-Date: 2001-09-22 21:00+0200\n"
+"PO-Revision-Date: 2002-09-07 21:00+0200\n"
 "Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
 "Language-Team: Danish <dansk@klid.dk>\n"
 "MIME-Version: 1.0\n"
@@ -19,9 +20,7 @@ msgid "Running %s..."
 msgstr "Kør %s..."
 
 #: ly2dvi.py:118
-msgid ""
-"Distributed under terms of the GNU General Public License.  It comes with NO "
-"WARRANTY."
+msgid "Distributed under terms of the GNU General Public License.  It comes with NO WARRANTY."
 msgstr ""
 
 #: ly2dvi.py:125 midi2ly.py:148 mup2ly.py:143 update-lily.py:137 input.cc:87
@@ -97,9 +96,9 @@ msgstr "tilf
 
 # %s er programmets navn
 #: ly2dvi.py:338
-#, fuzzy, c-format
+#, c-format
 msgid "keep all output, output to directory %s.dir"
-msgstr "behold al uddata, og navngiv kataloget %s.dir"
+msgstr "behold al uddata, udskrivo i kataloget %s.dir"
 
 #: ly2dvi.py:339
 msgid "don't run LilyPond"
@@ -119,7 +118,7 @@ msgstr "skriv uddata til FIL"
 
 #: ly2dvi.py:342
 msgid "find pfa fonts used in FILE"
-msgstr ""
+msgstr "find pfa-skrifttyper brugt i FIL"
 
 #: ly2dvi.py:344
 msgid "set the resolution of the preview to RES"
@@ -130,9 +129,8 @@ msgid "generate PostScript output"
 msgstr "lav PostScript-uddata"
 
 #: ly2dvi.py:346
-#, fuzzy
 msgid "generate PDF output"
-msgstr "lav PostScript-uddata"
+msgstr "lav PDF-uddata"
 
 #: ly2dvi.py:347
 msgid "use pdflatex to generate a PDF output"
@@ -164,14 +162,14 @@ msgid "show warranty and copyright"
 msgstr "vis garanti og copyright"
 
 #: ly2dvi.py:448
-#, fuzzy, c-format
+#, c-format
 msgid "no such setting: `%s'"
-msgstr "indstillingen findes ikke: %s"
+msgstr "indstillingen findes ikke: '%s'"
 
 #: ly2dvi.py:508
 #, c-format
 msgid "LilyPond crashed (signal %d)."
-msgstr ""
+msgstr "LilyPond gik ned (signal %d)."
 
 #: ly2dvi.py:509
 msgid "Please submit a bug report to bug-lilypond@gnu.org"
@@ -188,14 +186,14 @@ msgid "Analyzing %s..."
 msgstr "Analyserer %s..."
 
 #: ly2dvi.py:578
-#, fuzzy, c-format
+#, c-format
 msgid "no LilyPond output found for `%s'"
-msgstr "ingen lilyponduddata fundet for %s"
+msgstr "ingen lilyponduddata fundet for '%s'"
 
 #: ly2dvi.py:618
-#, fuzzy, c-format
+#, c-format
 msgid "invalid value: `%s'"
-msgstr "ugyldigt værdi: %s"
+msgstr "ugyldig værdi: '%s'"
 
 #: ly2dvi.py:724
 msgid "LaTeX failed on the output file."
@@ -206,14 +204,14 @@ msgid "The error log is as follows:"
 msgstr ""
 
 #: ly2dvi.py:849
-#, fuzzy, c-format
+#, c-format
 msgid "not a PostScript file: `%s'"
-msgstr "kan ikke Ã¥bne fil: \"%s\""
+msgstr "ikke en PostScript fil: '%s'"
 
 #: ly2dvi.py:865 midi2ly.py:1012 update-lily.py:458
 #, c-format
 msgid "getopt says: `%s'"
-msgstr ""
+msgstr "getopt siger: '%s'"
 
 #: ly2dvi.py:948
 msgid "pseudo filter"
@@ -224,9 +222,9 @@ msgid "pseudo filter only for single input file"
 msgstr ""
 
 #: ly2dvi.py:980
-#, fuzzy, c-format
+#, c-format
 msgid "filename should not contain spaces: `%s'"
-msgstr "Indholder allerede: \"%s\""
+msgstr "filnavn bør ikke indeholde mellemrum: '%s'"
 
 # hær er det spørg om skrivning til en fil
 #: ly2dvi.py:1076 input-file-results.cc:67
@@ -248,13 +246,12 @@ msgid "%s output to `%s'..."
 msgstr "%s udskrevet til \"%s\"..."
 
 #: ly2dvi.py:1111
-#, fuzzy
 msgid "no files specified on command line"
 msgstr "ingen filer angivne pÃ¥ kommandolinjen."
 
 #: midi2ly.py:92
 msgid "Convert MIDI to LilyPond source"
-msgstr ""
+msgstr "Konvertér MIDI til LilyPond-klide"
 
 #: midi2ly.py:95
 msgid "print absolute pitches"
@@ -270,17 +267,16 @@ msgstr ""
 
 #: midi2ly.py:97
 msgid "print explicit durations"
-msgstr ""
+msgstr "udskriv eksplicitte længder"
 
 #: midi2ly.py:99
-#, fuzzy
 msgid "ALT[:MINOR]"
-msgstr "TONE[:MOL]"
+msgstr ""
 
 #: midi2ly.py:99
 #, fuzzy
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "sæt tonart: TONE +forhøjelser/-sænkninger; :1 mol"
+msgstr "sæt toneart: TONE +forhøjelser/-sænkninger; :1 mol"
 
 #: midi2ly.py:101
 msgid "quantise note starts on DUR"
@@ -300,16 +296,15 @@ msgstr ""
 
 #: midi2ly.py:1027
 msgid "Example:"
-msgstr ""
+msgstr "Eksempel:"
 
 #: midi2ly.py:1081
 msgid "no files specified on command line."
 msgstr "ingen filer angivne pÃ¥ kommandolinjen."
 
 #: mup2ly.py:69
-#, fuzzy
 msgid "Convert mup to LilyPond source"
-msgstr "Konvertér mup til ly"
+msgstr "Konvertér mup til LilyPond-kilde"
 
 #: mup2ly.py:72
 msgid "debug"
@@ -440,19 +435,19 @@ msgid "invalid argument `%s' to option `%s'"
 msgstr "ugyldigt argument \"%s\" til flag \"%s\""
 
 #: warn.cc:24
-#, fuzzy, c-format
+#, c-format
 msgid "warning: %s\n"
-msgstr "advarsel: "
+msgstr "advarsel: %s\n"
 
 #: warn.cc:30
-#, fuzzy, c-format
+#, c-format
 msgid "error: %s\n"
-msgstr "fejl: "
+msgstr "fejl: %s\n"
 
 #: warn.cc:43
-#, fuzzy, c-format
+#, c-format
 msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr " (Fortsætter, kryds fingrene)"
+msgstr "programfejl: %s (Fortsætter, kryds fingrene)\n"
 
 #: accidental-engraver.cc:181 new-accidental-engraver.cc:237
 #, c-format
@@ -460,9 +455,9 @@ msgid "Accidental typesetting list must begin with context-name: %s"
 msgstr ""
 
 #: accidental-engraver.cc:206 new-accidental-engraver.cc:262
-#, fuzzy, c-format
+#, c-format
 msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "ukendt \"escaped\" streng: \"\\%s\""
+msgstr ""
 
 #: accidental-engraver.cc:222 new-accidental-engraver.cc:278
 #, c-format
@@ -500,12 +495,8 @@ msgid "does not match: `%s'"
 msgstr "matcher ikke: \"%s\""
 
 #: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-" Genopbyg alle .afm-filer, og fjern alle .pk- og .tfm-filer. Kør igen med -V "
-"for at vise skrifttypesøgestier."
+msgid " Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V to show font paths."
+msgstr " Genopbyg alle .afm-filer, og fjern alle .pk- og .tfm-filer. Kør igen med -V for at vise skrifttypesøgestier."
 
 #: all-font-metrics.cc:167
 #, c-format
@@ -561,25 +552,21 @@ msgid "beam was started here"
 msgstr "bjælken startede her"
 
 #: beam.cc:134
-#, fuzzy
 msgid "beam has less than two visible stems"
-msgstr "bjælke har mindre end to nodehalse"
+msgstr "bjælke har mindre end to synlige nodehalse"
 
 #: beam.cc:139
-#, fuzzy
 msgid "Beam has less than two stems. Removing beam."
-msgstr "bjælke har mindre end to nodehalse"
+msgstr "Bjælke har mindre end to nodehalse. Fjerner bjælke."
 
 #: beam.cc:951
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
+msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
+msgstr "Ikke sikker pÃ¥ at vi kan finde en pæn hældning pÃ¥ bjælken (ingen brugelig initiel konfiguration fundet)."
 
 #: break-align-interface.cc:166
-#, fuzzy, c-format
+#, c-format
 msgid "No spacing entry from %s to `%s'"
-msgstr "Tilføjer ikke oversætter: \"%s\""
+msgstr "Ingen mellemrums-indgang fra %s til `%s'"
 
 #: change-iterator.cc:22
 #, c-format
@@ -636,9 +623,8 @@ msgid "already have a decrescendo"
 msgstr "har allerede et diminuendo"
 
 #: dynamic-engraver.cc:215
-#, fuzzy
 msgid "Cresc started here"
-msgstr "bjælken startede her"
+msgstr "Cresc startede her"
 
 #: dynamic-engraver.cc:307
 msgid "unterminated (de)crescendo"
@@ -650,13 +636,11 @@ msgstr "uafsluttet udvider"
 
 #: extender-engraver.cc:108
 msgid "Nothing to connect extender to on the left.  Ignoring extender request."
-msgstr ""
-"Der er ingenting at forbinde udvideren mod til venstre. Ignorerer Ã¸nsket om "
-"udvider"
+msgstr "Der er ingenting at forbinde udvideren mod til venstre. Ignorerer Ã¸nsket om udvider"
 
 #: folded-repeat-iterator.cc:78
 msgid "no one to print a repeat brace"
-msgstr "det er ingen som kan skrive et gentagelsestegn"
+msgstr "der er ingen som kan skrive et gentagelsestegn"
 
 #: font-interface.cc:238
 msgid "couldn't find any font satisfying "
@@ -685,9 +669,7 @@ msgstr "uafsluttet bindestreg"
 
 #: hyphen-engraver.cc:101
 msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen request."
-msgstr ""
-"Det er ingenting at forbinde bindestregen mod til venstre. Ignorerer "
-"bindestregsforespørgslen."
+msgstr "Der er ingenting at forbinde bindestregen med til venstre. Ignorerer bindestregsforespørgslen."
 
 #: input-file-results.cc:71 source-file.cc:52 streams.cc:38
 #, c-format
@@ -724,22 +706,22 @@ msgid "FIXME: key change merge"
 msgstr "FIX: tonartsskiftsfletning"
 
 #: kpath.cc:64
-#, fuzzy, c-format
+#, c-format
 msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "kan ikke finde fil: \"%s\""
+msgstr "Kpathsea kunne ikke finde TMF-fil: \"%s\""
 
 #: ligature-bracket.cc:105 ligature-bracket.cc:139 ligature-engraver.cc:124
 msgid "no left bound"
-msgstr ""
+msgstr "Ingen venstrekant"
 
 #: ligature-engraver.cc:81
 #, fuzzy
 msgid "can't find start of ligature"
-msgstr "kan ikke finde start pÃ¥ bue"
+msgstr "kan ikke finde start pÃ¥ legatobue"
 
 #: ligature-engraver.cc:86
 msgid "no right bound"
-msgstr ""
+msgstr "Ingen højrekant"
 
 #: ligature-engraver.cc:108
 #, fuzzy
@@ -749,7 +731,7 @@ msgstr "har allerede en bj
 #: ligature-engraver.cc:166
 #, fuzzy
 msgid "unterminated ligature"
-msgstr "uafsluttet bue"
+msgstr "uafsluttet legatobue"
 
 #: ligature-engraver.cc:183
 msgid "ligature may not contain rest; ignoring rest"
@@ -763,28 +745,25 @@ msgstr "bj
 #: lily-guile.cc:99
 #, c-format
 msgid "(load path: `%s')"
-msgstr "(indlæsningssøgesti: \"%s\""
+msgstr "(indlæsningssøgesti: \"%s\")"
 
 #: lily-guile.cc:582
-#, fuzzy, c-format
+#, c-format
 msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-"Kan ikke finde egenskabstypekontrol for \"%s\". MÃ¥ske har du lavet en "
-"tastefejl? Laver tildeling alligevel."
+msgstr "Kan ikke finde typetjek for egenskab af '%s' (%s)."
 
 #: lily-guile.cc:585
 msgid "Perhaps you made a typing error?"
-msgstr ""
+msgstr "MÃ¥ske lavede du en tastefejl?"
 
 #: lily-guile.cc:591
 msgid "Doing assignment anyway."
-msgstr ""
+msgstr "Laver tildeling aligevel."
 
 #: lily-guile.cc:605
 #, c-format
 msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-"Typekontrol for \"%s\" mislykkedes; værdi \"%s\" skal have typen \"%s\""
+msgstr "Typekontrol for \"%s\" mislykkedes; værdi \"%s\" skal have typen \"%s\""
 
 #: lookup.cc:141
 msgid "round filled box horizontal extent smaller than blot; decreasing blot"
@@ -796,7 +775,7 @@ msgstr ""
 
 #: lyric-phrasing-engraver.cc:311
 msgid "lyrics found without any matching notehead"
-msgstr "tekst fundet uden noget matchende nodehoved"
+msgstr "tekst fundet uden noget tilhørende nodehoved"
 
 #: lyric-phrasing-engraver.cc:317
 msgid "Huh? Melismatic note found to have associated lyrics."
@@ -808,7 +787,7 @@ msgstr "UDTR"
 
 #: main.cc:107
 msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
+msgstr "sæt alternativer, brug -e '(ly-option-usage)' for hjælp"
 
 #. another bug in option parser: --output=foe is taken as an abbreviation
 #. for --output-format
@@ -817,8 +796,9 @@ msgid "EXT"
 msgstr "FMT"
 
 #: main.cc:110
+#, fuzzy
 msgid "use output format EXT"
-msgstr ""
+msgstr "brug uddataformat FMT (scm, ps, tex eller as)"
 
 #: main.cc:112
 msgid "FIELD"
@@ -826,7 +806,7 @@ msgstr "FELT"
 
 #: main.cc:112
 msgid "write header field to BASENAME.FIELD"
-msgstr "skriv rubrikfælt til BASNAVN.FELT"
+msgstr "skriv rubrikfelt til BASENAVN.FELT"
 
 #: main.cc:113
 msgid "add DIR to search path"
@@ -980,7 +960,7 @@ msgstr "kan ikke finde omgivelsen \"%s\""
 #: music.cc:159
 #, c-format
 msgid "Transposition by %s makes accidental larger than two"
-msgstr "Transponering med %s gør accicental større end to"
+msgstr "Transponering med %s medfører løst fortegn større end to"
 
 #: my-lily-lexer.cc:142
 #, c-format
@@ -998,15 +978,15 @@ msgstr "Tolker..."
 
 #: my-lily-parser.cc:54
 msgid "Braces don't match"
-msgstr "Krølleparenteser passer ikke"
+msgstr "Klammer passer ikke"
 
 #: note-collision.cc:340
 msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "For mange sammenhængende nodekolonner. Ignorerer dem."
+msgstr "For mange overlappende nodekolonner. Ignorerer dem."
 
 #: note-head.cc:134
 msgid "Symbol not found, "
-msgstr ""
+msgstr "Symbol ikke fundet, "
 
 #: output-property-music-iterator.cc:20 request-chord-iterator.cc:76
 #, c-format
@@ -1023,9 +1003,9 @@ msgid ", at "
 msgstr ", ved "
 
 #: paper-score.cc:77
-#, fuzzy, c-format
+#, c-format
 msgid "Element count %d (spanners %d) "
-msgstr "Elementantal %d "
+msgstr ""
 
 #: paper-score.cc:82
 msgid "Preprocessing elements..."
@@ -1037,7 +1017,7 @@ msgstr "Udskriver partitur, defineret ved: "
 
 #: parse-scm.cc:80
 msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
+msgstr "GUILE signalerede en fejl for udtrykket, der begynder her"
 
 #.
 #. We could change the current translator's id, but that would make
@@ -1048,7 +1028,7 @@ msgstr ""
 #: part-combine-music-iterator.cc:116
 #, c-format
 msgid "I'm one myself: `%s'"
-msgstr "Jag er selv Ã©n: \"%s\""
+msgstr "Jeg er selv Ã©n: \"%s\""
 
 #: part-combine-music-iterator.cc:119
 #, c-format
@@ -1057,11 +1037,11 @@ msgstr "ingen af disse i min familie: \"%s\""
 
 #: percent-repeat-engraver.cc:116
 msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Véd ikke hvordan en procentgentagelse af denne længde skal hÃ¥ndteres."
+msgstr "Véd ikke hvordan en procenttegnsgentagelse (percent) af denne længde skal hÃ¥ndteres."
 
 #: percent-repeat-iterator.cc:53
 msgid "no one to print a percent"
-msgstr "der er ingen som kan skrive en procent"
+msgstr "der er ingen som kan skrive et procent-tegn"
 
 #: performance.cc:51
 msgid "Track ... "
@@ -1072,9 +1052,8 @@ msgid "Creator: "
 msgstr "Skaber: "
 
 #: performance.cc:103
-#, fuzzy
 msgid "at "
-msgstr "ved "
+msgstr "ved "
 
 #: performance.cc:114
 #, c-format
@@ -1101,9 +1080,8 @@ msgid "can't find start of piano pedal: `%s'"
 msgstr "kan ikke finde start pÃ¥ pianopedal: \"%s\""
 
 #: piano-pedal-engraver.cc:405
-#, fuzzy
 msgid "unterminated pedal bracket"
-msgstr "uafsluttet bjælke"
+msgstr ""
 
 #: pitch.cc:25
 msgid "Pitch arguments out of range"
@@ -1155,13 +1133,11 @@ msgid "  Evalute the Scheme EXPR before parsing any .ly files."
 msgstr ""
 
 #: scm-option.cc:48
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
+msgid "  Multiple -e options may be given, they will be evaluated sequentially."
 msgstr ""
 
 #: scm-option.cc:50
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
+msgid "  The function ly-set-option allows for access to some internal variables."
 msgstr ""
 
 #: scm-option.cc:52
@@ -1177,9 +1153,9 @@ msgid "Unknown internal option!"
 msgstr ""
 
 #: score-engraver.cc:102
-#, fuzzy, c-format
+#, c-format
 msgid "can't find `%s'"
-msgstr "kan ikke finde: \"%s\""
+msgstr "kan ikke finde: '%s'"
 
 #: score-engraver.cc:103
 msgid "Fonts have not been installed properly.  Aborting"
@@ -1230,22 +1206,21 @@ msgstr ""
 
 #: slur-engraver.cc:140
 msgid "unterminated slur"
-msgstr "uafsluttet bue"
+msgstr "uafsluttet legatobue"
 
 #. How to shut up this warning, when Voice_devnull_engraver has
 #. eaten start request?
 #: slur-engraver.cc:157
 msgid "can't find start of slur"
-msgstr "kan ikke finde start pÃ¥ bue"
+msgstr "kan ikke finde start pÃ¥ legatobue"
 
 #: slur.cc:53
-#, fuzzy
 msgid "Putting slur over rest."
-msgstr "Sætter bue over pause. Ignorerer."
+msgstr "Sætter legatobue over pause."
 
 #: slur.cc:424
 msgid "Slur over rest?"
-msgstr "Bue over pause?"
+msgstr "Legatobue over pause?"
 
 #: source-file.cc:65
 #, c-format
@@ -1269,7 +1244,7 @@ msgstr ""
 #: stem-engraver.cc:117
 #, c-format
 msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Tilføjer nodehoved til inkompatibel bue (type = %d)"
+msgstr "Tilføjer nodehoved til inkompatibel nodehals (type = %d)"
 
 #: stem.cc:118
 msgid "Weird stem size; check for narrow beams"
@@ -1324,8 +1299,7 @@ msgstr "TFM-rubrik i \"%s\" har kun %u ord"
 #: tfm-reader.cc:142
 #, c-format
 msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-"%s: TFM-fil har %u parametre, hvilket er mere end de %u jeg kan hÃ¥ndtere"
+msgstr "%s: TFM-fil har %u parametre, hvilket er mere end de %u jeg kan hÃ¥ndtere"
 
 #: tfm.cc:83
 #, c-format
@@ -1334,15 +1308,15 @@ msgstr "kan ikke finde ASCII-tegn: %d"
 
 #: tie-engraver.cc:216
 msgid "lonely tie"
-msgstr "ensom bue"
+msgstr "ensom bindebue"
 
 #: tie-performer.cc:161
 msgid "No ties were created!"
-msgstr "Ingen buer blev lavet!"
+msgstr "Ingen bindebuer blev lavet!"
 
 #: time-scaled-music-iterator.cc:25
 msgid "no one to print a tuplet start bracket"
-msgstr "der findes ingen som kan skrive en startparentes for tuppel"
+msgstr "der findes ingen som kan skrive en startklamme for tuppel"
 
 #: translator-ctors.cc:53
 #, c-format
@@ -1380,11 +1354,11 @@ msgstr "kan ikke finde eller oprette: \"%s\""
 
 #: volta-engraver.cc:111
 msgid "No volta spanner to end"
-msgstr "Ingen reprisebro til slut"
+msgstr "Ingen volte-bro at afslutte"
 
 #: volta-engraver.cc:121
 msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Har allerede en reprisebro. Stopper denne for tidligt."
+msgstr "Har allerede en volte-bro. Stopper denne for tidligt."
 
 #: volta-engraver.cc:125
 msgid "Also have a stopped spanner.  Giving up."
@@ -1397,7 +1371,7 @@ msgstr "Identificerer m
 
 #: parser.yy:729
 msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "Flere alternativer end repriser. Stryger tiloversblevne alternativer."
+msgstr "Flere alternativer end gentagelser. Stryger tiloversblevne alternativer."
 
 #: parser.yy:798
 msgid "Second argument must be a symbol"
@@ -1504,23 +1478,20 @@ msgstr "Overvej at konvertere inddata med skriptet \"convert-ly\""
 #~ msgid "Generate .dvi with LaTeX for LilyPond"
 #~ msgstr "Generér .dvi med LaTeX for LilyPond"
 
-# det handlar om mmap hær
-#~ msgid "can't map file"
-#~ msgstr "kan ikke lave \"mmap\" pÃ¥ filen"
-
-#, fuzzy
-#~ msgid "use output format EXT (tex [default], pdftex, ps, scm or as)"
-#~ msgstr "brug uddataformat FMT (scm, ps, tex eller as)"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "Dette program blev oversat med følgende flag:"
+# %s er progravnavnet (mup2ly)
+#~ msgid "%s is far from completed.  Not all constructs are recognised."
+#~ msgstr "%s er langt fra færdig, og kan ikke genkende alle konstruktioner."
 
-#~ msgid "Expecting %d arguments"
-#~ msgstr "Forventer %d argumenter"
+#~ msgid "Cleaning `%s'..."
+#~ msgstr "Renser \"%s\"..."
 
 #~ msgid "EOF in a string"
 #~ msgstr "EOF i en streng"
 
+# det handlar om mmap hær
+#~ msgid "can't map file"
+#~ msgstr "kan ikke lave \"mmap\" pÃ¥ filen"
+
 #~ msgid "<stdin>"
 #~ msgstr "<stdin>"
 
@@ -1531,14 +1502,23 @@ msgstr "Overvej at konvertere inddata med skriptet \"convert-ly\""
 #~ msgstr "kan ikke finde start pÃ¥ bjælke"
 
 #~ msgid "weird beam vertical offset"
-#~ msgstr "underligt lodret afstand for bjælke"
+#~ msgstr "underlig lodret afstand for bjælke"
 
 #~ msgid "unknown spacing pair `%s', `%s'"
 #~ msgstr "ukendt afstandspar \"%s\", \"%s\""
 
+#~ msgid "no Grace context available"
+#~ msgstr "ingen forslagsnodeomgivelse (Grace) tilgængelig"
+
+#~ msgid "Unattached grace notes.  Attaching to last musical column."
+#~ msgstr "Ikke-fæstede forslagsnoder. Fæster ved sidste musikkolonne."
+
 #~ msgid "evalute EXPR as Scheme after .scm init is read"
 #~ msgstr "evaluér UDTR som Scheme efter .scm-init er læst"
 
+#~ msgid "This binary was compiled with the following options:"
+#~ msgstr "Dette program blev oversat med følgende flag:"
+
 #~ msgid "ly_get_mus_property (): Not a Music"
 #~ msgstr "ly_get_mus_property (): Ikke en \"Music\""
 
@@ -1554,6 +1534,9 @@ msgstr "Overvej at konvertere inddata med skriptet \"convert-ly\""
 #~ msgid "ly_music_name (): Not a music expression"
 #~ msgstr "ly_music_name (): Ikke et musikudtryk"
 
+#~ msgid "writing header field `%s' to `%s'..."
+#~ msgstr "skriver rubrikfelt \"%s\" til \"%s\"..."
+
 #~ msgid ""
 #~ "`%s' is deprecated.  Use\n"
 #~ " \\property %s.%s \\override #'%s = #%s"
@@ -1570,28 +1553,18 @@ msgstr "Overvej at konvertere inddata med skriptet \"convert-ly\""
 #~ msgid "Scheme options:"
 #~ msgstr "Scheme-flag:"
 
+#~ msgid "Can't find property type-check for `%s'.  Perhaps you made a typing error? Doing assignment anyway."
+#~ msgstr "Kan ikke finde egenskabstypekontrol for \"%s\". MÃ¥ske har du lavet en tastefejl? Laver tildeling alligevel."
+
 #~ msgid "ly-get-trans-property: expecting a Translator_group argument"
 #~ msgstr "ly-get-trans-property: forventede et Translator_group-argument"
 
+#~ msgid "Expecting %d arguments"
+#~ msgstr "Forventer %d argumenter"
+
 #~ msgid "Oldest supported input version: %s"
 #~ msgstr "Ældste inddataversion som understøttes: %s"
 
-# %s er progravnavnet (mup2ly)
-#~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr "%s er langt fra færdig, og kan ikke genkende alle konstruktioner."
-
-#~ msgid "Cleaning `%s'..."
-#~ msgstr "Renser \"%s\"..."
-
-#~ msgid "no Grace context available"
-#~ msgstr "ingen prydomgivelse tilgængelig"
-
-#~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr "Ikke-fæstede prydsnoder. Fæster ved sidste musikkolonne."
-
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "skriver rubrikfelt \"%s\" til \"%s\"..."
-
 #~ msgid "#32 in quarter: %d"
 #~ msgstr "#32 i fjerdedel: %d"
 
index 29ea501e4852b38250b5a52299c6814fa7ffe229..6f1862fa0af4957761b1e33e6239fb78c8de036a 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,9 +4,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 1.5.69\n"
+"Project-Id-Version: lilypond 1.6.0\n"
 "POT-Creation-Date: 2002-08-18 17:05+0200\n"
-"PO-Revision-Date: 2002-07-30 08:00-0500\n"
+"PO-Revision-Date: 2002-08-26 12:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,10 +19,8 @@ msgid "Running %s..."
 msgstr "Exécution de %s..."
 
 #: ly2dvi.py:118
-msgid ""
-"Distributed under terms of the GNU General Public License.  It comes with NO "
-"WARRANTY."
-msgstr ""
+msgid "Distributed under terms of the GNU General Public License.  It comes with NO WARRANTY."
+msgstr "Distribué selon les termes de la GNU General Public License.  Le logiciel est fourni sans GARANTIE."
 
 #: ly2dvi.py:125 midi2ly.py:148 mup2ly.py:143 update-lily.py:137 input.cc:87
 msgid "warning: "
@@ -73,12 +71,11 @@ msgstr "Nettoyage de %s..."
 
 #: ly2dvi.py:330
 msgid "Run LilyPond using LaTeX for titling"
-msgstr ""
+msgstr "Exécuter LilyPond en utilisant LaTeX pour le Â« titling Â»"
 
 #: ly2dvi.py:334 main.cc:115
 msgid "write Makefile dependencies for every input file"
-msgstr ""
-"produire les dépendances pour Makefile concernant chaque fichier d'entrée"
+msgstr "produire les dépendances pour Makefile concernant chaque fichier d'entrée"
 
 #: ly2dvi.py:335 midi2ly.py:98 mup2ly.py:74 update-lily.py:87 main.cc:111
 msgid "this help"
@@ -93,9 +90,9 @@ msgid "add DIR to LilyPond's search path"
 msgstr "ajouter le RÉPERTOIRE au chemin de recherche de LilyPond"
 
 #: ly2dvi.py:338
-#, fuzzy, c-format
+#, c-format
 msgid "keep all output, output to directory %s.dir"
-msgstr "conserver toutes les sorties et nommer le répertoire %s.dir"
+msgstr "conserver toutes les sorties dans le répertoire %s.dir"
 
 #: ly2dvi.py:339
 msgid "don't run LilyPond"
@@ -118,27 +115,24 @@ msgid "find pfa fonts used in FILE"
 msgstr "repérer les fontes pfa utilisées dans le FICHIER"
 
 #: ly2dvi.py:344
-#, fuzzy
 msgid "set the resolution of the preview to RES"
-msgstr "Initialiser le résolution de la prévisualitation Ã  la RÉSOLUTION"
+msgstr "utiliser la RÉSOLUTION pour la prévisualitation"
 
 #: ly2dvi.py:345
 msgid "generate PostScript output"
 msgstr "générer une sortie PostScript"
 
 #: ly2dvi.py:346
-#, fuzzy
 msgid "generate PDF output"
-msgstr "générer une sortie PostScript"
+msgstr "générer une sortie PDF"
 
 #: ly2dvi.py:347
 msgid "use pdflatex to generate a PDF output"
-msgstr ""
+msgstr "utiliser pdflatex pour générer la sortie PDF"
 
 #: ly2dvi.py:349
-#, fuzzy
 msgid "make a picture of the first system"
-msgstr "Produire une image de ce premier système."
+msgstr "produire une image de ce premier système"
 
 #: ly2dvi.py:350
 msgid "KEY=VAL"
@@ -161,23 +155,23 @@ msgid "show warranty and copyright"
 msgstr "afficher la notice de garantie et du droit d'auteur"
 
 #: ly2dvi.py:448
-#, fuzzy, c-format
+#, c-format
 msgid "no such setting: `%s'"
-msgstr "pas de telle initialisation: %s"
+msgstr "pas de telle configuration: Â« %s Â»"
 
 #: ly2dvi.py:508
 #, c-format
 msgid "LilyPond crashed (signal %d)."
-msgstr ""
+msgstr "Lilypond a planté (signal %d)."
 
 #: ly2dvi.py:509
 msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
+msgstr "SVP soumettre un rapport d'anomalies Ã  bug-lilypond@gnu.org"
 
 #: ly2dvi.py:513
-#, fuzzy, c-format
+#, c-format
 msgid "LilyPond failed on the input file (exit status %d)."
-msgstr "Échec de LaTex sur le fichier de sortie."
+msgstr "Échec de Lilypond sur le fichier d'entrée (état de sortie %d)."
 
 #: ly2dvi.py:522
 #, c-format
@@ -185,14 +179,14 @@ msgid "Analyzing %s..."
 msgstr "Analyse de %s..."
 
 #: ly2dvi.py:578
-#, fuzzy, c-format
+#, c-format
 msgid "no LilyPond output found for `%s'"
-msgstr "aucune sortie n'a Ã©té trouvée pour %s"
+msgstr "aucune sortie de Lilypond n'a Ã©té trouvée pour Â« %s Â»"
 
 #: ly2dvi.py:618
-#, fuzzy, c-format
+#, c-format
 msgid "invalid value: `%s'"
-msgstr "valeur invalide: %s"
+msgstr "valeur invalide: Â« %s Â»"
 
 #: ly2dvi.py:724
 msgid "LaTeX failed on the output file."
@@ -200,7 +194,7 @@ msgstr "
 
 #: ly2dvi.py:726
 msgid "The error log is as follows:"
-msgstr ""
+msgstr "Le journal d'erreurs est comme suit:"
 
 #: ly2dvi.py:849
 #, c-format
@@ -214,11 +208,11 @@ msgstr "getopt() indique: 
 
 #: ly2dvi.py:948
 msgid "pseudo filter"
-msgstr ""
+msgstr "pseudo filtre"
 
 #: ly2dvi.py:951
 msgid "pseudo filter only for single input file"
-msgstr ""
+msgstr "pseudo filtre seulement pour le seul fichier d'entrée"
 
 #: ly2dvi.py:980
 #, c-format
@@ -242,9 +236,8 @@ msgid "%s output to `%s'..."
 msgstr "%s produites dans Â« %s Â»..."
 
 #: ly2dvi.py:1111
-#, fuzzy
 msgid "no files specified on command line"
-msgstr "aucun fichier spéficié sur la ligne de commande."
+msgstr "aucun fichier spéficié sur la ligne de commande"
 
 #: midi2ly.py:92
 msgid "Convert MIDI to LilyPond source"
@@ -448,8 +441,7 @@ msgstr "Erreur de programmation: %s (Poursuite; croisons les doigts)\n"
 #: accidental-engraver.cc:181 new-accidental-engraver.cc:237
 #, c-format
 msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-"Liste de mise en page accidentelle doit débuter avec un nom de contexte: %s"
+msgstr "Liste de mise en page accidentelle doit débuter avec un nom de contexte: %s"
 
 #: accidental-engraver.cc:206 new-accidental-engraver.cc:262
 #, c-format
@@ -492,12 +484,8 @@ msgid "does not match: `%s'"
 msgstr "ne concorde pas: Â« %s Â»"
 
 #: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-" Reconstruire tous les fichiers .afm et enlever tous les fichiers .pk et ."
-"tfm. Ré-exécuter avec l'option -V pour afficher les chemins vers les fontes"
+msgid " Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V to show font paths."
+msgstr " Reconstruire tous les fichiers .afm et enlever tous les fichiers .pk et .tfm. Ré-exécuter avec l'option -V pour afficher les chemins vers les fontes"
 
 #: all-font-metrics.cc:167
 #, c-format
@@ -561,12 +549,8 @@ msgid "Beam has less than two stems. Removing beam."
 msgstr "faisceau a moins de deux queues. Retrait du faisceau."
 
 #: beam.cc:951
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-"Pas certain que l'on puisse repérer un joli pente dans le faisceau "
-"(configuration initiale viable non repérée)"
+msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
+msgstr "Pas certain que l'on puisse repérer un joli pente dans le faisceau (configuration initiale viable non repérée)"
 
 #: break-align-interface.cc:166
 #, c-format
@@ -640,9 +624,7 @@ msgstr "prolongation non termin
 
 #: extender-engraver.cc:108
 msgid "Nothing to connect extender to on the left.  Ignoring extender request."
-msgstr ""
-"Rien Ã  relier Ã  la prolongation sur la gauche. Requête de prolongation "
-"ignorée."
+msgstr "Rien Ã  relier Ã  la prolongation sur la gauche. Requête de prolongation ignorée."
 
 #: folded-repeat-iterator.cc:78
 msgid "no one to print a repeat brace"
@@ -655,7 +637,7 @@ msgstr "ne peut rep
 #: gourlay-breaking.cc:188
 #, c-format
 msgid "Optimal demerits: %f"
-msgstr ""
+msgstr "Démérites optionnels: %f"
 
 #: gourlay-breaking.cc:193
 msgid "No feasible line breaking found"
@@ -675,9 +657,7 @@ msgstr "trait d'union non termin
 
 #: hyphen-engraver.cc:101
 msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen request."
-msgstr ""
-"Rien Ã  connecter au trait d'union sur la gauche. Requête de trait d'union "
-"ignoré"
+msgstr "Rien Ã  connecter au trait d'union sur la gauche. Requête de trait d'union ignoré"
 
 #: input-file-results.cc:71 source-file.cc:52 streams.cc:38
 #, c-format
@@ -752,39 +732,30 @@ msgid "(load path: `%s')"
 msgstr "(chemin de chargement: Â« %s Â»)"
 
 #: lily-guile.cc:582
-#, fuzzy, c-format
+#, c-format
 msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-"Ne peut repérer la propriété de vérification de type pour Â« %s Â» (%s). Peut-"
-"être avez-vous commis une erreur d'orthographe? Affectation faite de toutes "
-"manières."
+msgstr "Ne peut repérer la propriété de vérification de type pour Â« %s Â» (%s)."
 
 #: lily-guile.cc:585
 msgid "Perhaps you made a typing error?"
-msgstr ""
+msgstr "Peut-être avez-vous commis une erreur?"
 
 #: lily-guile.cc:591
 msgid "Doing assignment anyway."
-msgstr ""
+msgstr "Affectation faite malgré tout."
 
 #: lily-guile.cc:605
 #, c-format
 msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-"Vérification de type pour Â« %s Â» a Ã©choué; la valeur Â« %s Â» doit Ãªtre de "
-"type Â« %s Â»"
+msgstr "Vérification de type pour Â« %s Â» a Ã©choué; la valeur Â« %s Â» doit Ãªtre de type Â« %s Â»"
 
 #: lookup.cc:141
 msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-"largeur horizontale de la boîte plus petite que le diamètre du coin; "
-"réduction du diamètre du coin"
+msgstr "largeur horizontale de la boîte plus petite que le diamètre du coin; réduction du diamètre du coin"
 
 #: lookup.cc:146
 msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-"hauteur verticale de la boîte plus petite que le diamètre du coin; réduction "
-"du diamètre du coin"
+msgstr "hauteur verticale de la boîte plus petite que le diamètre du coin; réduction du diamètre du coin"
 
 #: lyric-phrasing-engraver.cc:311
 msgid "lyrics found without any matching notehead"
@@ -799,10 +770,8 @@ msgid "EXPR"
 msgstr "EXPR"
 
 #: main.cc:107
-#, fuzzy
 msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-"Options de scheme: essayer -e \"(set-lily-option 'help 0)\" pour de l'aide"
+msgstr "options d'initialisation: utiliser -e '(ly-option-usage)' pour de l'aide"
 
 #. another bug in option parser: --output=foe is taken as an abbreviation
 #. for --output-format
@@ -812,7 +781,7 @@ msgstr "EXT"
 
 #: main.cc:110
 msgid "use output format EXT"
-msgstr ""
+msgstr "utiliser le format de sortie EXT"
 
 #: main.cc:112
 msgid "FIELD"
@@ -857,10 +826,8 @@ msgid ""
 "using a high level description file as input.  LilyPond is part of \n"
 "the GNU Project.\n"
 msgstr ""
-"LilyPond est un logiciel de composition de musique. Il produit de jolies "
-"feuilles\n"
-"de musique en utilisant un fichier de description de haut niveau Ã  "
-"l'entrée.\n"
+"LilyPond est un logiciel de composition de musique. Il produit de jolies feuilles\n"
+"de musique en utilisant un fichier de description de haut niveau Ã  l'entrée.\n"
 "LilyPond fait parti du projet GNU.\n"
 
 #: main.cc:182
@@ -870,10 +837,8 @@ msgid ""
 "and you are welcome to change it and/or distribute copies of it under\n"
 "certain conditions.  Invoke as `%s --warranty' for more information.\n"
 msgstr ""
-"Ce logiciel est libre. Il est couvert par la licence GNU General Public "
-"License,\n"
-"et vous Ãªtes libre de le modifier et/ou distribuer sous certaines "
-"conditions\n"
+"Ce logiciel est libre. Il est couvert par la licence GNU General Public License,\n"
+"et vous Ãªtes libre de le modifier et/ou distribuer sous certaines conditions\n"
 "Invoquer commme suit Â« %s --warranty Â» pour plus de détails.\n"
 
 #: main.cc:188 main.cc:200
@@ -911,8 +876,7 @@ msgstr ""
 "la license GNU General Public License for more details.\n"
 "\n"
 "    Vous devriez avoir reçu une copie (consulter le fichier COPYING) de la\n"
-"license GNU General Public License accompagnant ce logiciel; si absente "
-"écrire Ã \n"
+"license GNU General Public License accompagnant ce logiciel; si absente Ã©crire Ã \n"
 "la Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
 "USA.\n"
 
@@ -944,14 +908,12 @@ msgstr "Mensural_ligature: 
 #: mensural-ligature.cc:166
 #, c-format
 msgid "Mensural_ligature: delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-"Mensural_ligature: croissance du ton indéfinie sur flexa %d; 0 est assumé"
+msgstr "Mensural_ligature: croissance du ton indéfinie sur flexa %d; 0 est assumé"
 
 #: mensural-ligature.cc:177
 #, c-format
 msgid "Mensural_ligature: flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-"Mensural_ligature: largeur de flexa indéfinie sur flexa %d; 2.0 est assumé"
+msgstr "Mensural_ligature: largeur de flexa indéfinie sur flexa %d; 2.0 est assumé"
 
 #: mensural-ligature.cc:208
 msgid "Mensural_ligature: unexpected case fall-through"
@@ -1025,9 +987,9 @@ msgid ", at "
 msgstr ", Ã  "
 
 #: paper-score.cc:77
-#, fuzzy, c-format
+#, c-format
 msgid "Element count %d (spanners %d) "
-msgstr "Éléments dénombrés %d."
+msgstr "Éléments dénombrés %d (spanners %d) "
 
 #: paper-score.cc:82
 msgid "Preprocessing elements..."
@@ -1039,7 +1001,7 @@ msgstr "Production d'une feuille de musique, d
 
 #: parse-scm.cc:80
 msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
+msgstr "GUILE a signalé une erreur pour l'expression débutant ici"
 
 #.
 #. We could change the current translator's id, but that would make
@@ -1147,47 +1109,41 @@ msgid "too many colliding rests"
 msgstr "trop de pauses en collision"
 
 #: scm-option.cc:44
-#, fuzzy
 msgid "lilypond -e EXPR means:"
-msgstr "lilypond -e EXPRESSION signifie"
+msgstr "lilypond -e EXPRESSION signifie:"
 
 #: scm-option.cc:46
 msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
+msgstr "Evaluer l'EXPRESSION Scheme avant d'analyser les fichiers .ly"
 
 #: scm-option.cc:48
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
+msgid "  Multiple -e options may be given, they will be evaluated sequentially."
+msgstr "Les options multiples -e peuvent Ãªtre fournis, elles seront Ã©valuées séquentiellement."
 
 #: scm-option.cc:50
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
+msgid "  The function ly-set-option allows for access to some internal variables."
+msgstr "L'option de la fonction ly-set-option permet l'accès Ã  quelques variables internes."
 
 #: scm-option.cc:52
 msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
+msgstr "Usage: lilypond -e \"(ly-set-option SYMBOLE VALEUR)\""
 
 #: scm-option.cc:54
 msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
+msgstr "Où la paire SYMBOLE VALEUR peut prendre les options suivantes:"
 
 #: scm-option.cc:122
 msgid "Unknown internal option!"
 msgstr "Option interne inconnue!"
 
 #: score-engraver.cc:102
-#, fuzzy, c-format
+#, c-format
 msgid "can't find `%s'"
-msgstr "ne peut trouver: Â« %s Â»"
+msgstr "ne peut trouver Â« %s Â»"
 
 #: score-engraver.cc:103
-#, fuzzy
 msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-"Ne peut repérer feta20.afm. Les fontes n'ont pas Ã©té installées "
-"correctement; abandon"
+msgstr "Les fontes n'ont pas Ã©té installées correctement. Abandon"
 
 #: score-engraver.cc:207
 #, c-format
@@ -1327,8 +1283,7 @@ msgstr "L'en-t
 #: tfm-reader.cc:142
 #, c-format
 msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-"%s: le fichier TFM a %u paramètres qui sont plus que %u pouvant Ãªtre traités"
+msgstr "%s: le fichier TFM a %u paramètres qui sont plus que %u pouvant Ãªtre traités"
 
 #: tfm.cc:83
 #, c-format
@@ -1394,22 +1349,18 @@ msgid "Also have a stopped spanner.  Giving up."
 msgstr "A aussi une clef arrêtée. Abandon."
 
 #: parser.yy:434
-#, fuzzy
 msgid "Identifier should have alphabetic characters only"
 msgstr "L'identificateur doit contenir des caractères alphabétiques seulement"
 
 #: parser.yy:729
 msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-"Plus d'alternatives que de répétitions. Rebuts dépasse la limite des "
-"alternatives."
+msgstr "Plus d'alternatives que de répétitions. Rebuts dépasse la limite des alternatives."
 
 #: parser.yy:798
 msgid "Second argument must be a symbol"
 msgstr "Le second argument doit Ãªtre un symbole"
 
 #: parser.yy:803
-#, fuzzy
 msgid "First argument must be a procedure taking one argument"
 msgstr "Le premier argument doit Ãªtre une procédure n'acceptant qu'un argument"
 
@@ -1482,9 +1433,8 @@ msgid "Can't evaluate Scheme in safe mode"
 msgstr "Ne peut Ã©valuer le Schème de façon sûre"
 
 #: lexer.ll:364
-#, fuzzy
 msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Accolade repérée Ã  la fin des paroles. Espace oublié?"
+msgstr "Accolade repérée Ã  la fin des paroles. Avez-vous oublié un espace?"
 
 #: lexer.ll:480
 #, c-format
@@ -1497,14 +1447,13 @@ msgid "unknown escaped string: `\\%s'"
 msgstr "chaîne d'échappement inconnue: Â« \\%s Â»"
 
 #: lexer.ll:657
-#, fuzzy, c-format
+#, c-format
 msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "version de lilypond incorrecte: %s (%s, %s)"
+msgstr "Version de lilypond incorrecte: %s (%s, %s)"
 
 #: lexer.ll:658
-#, fuzzy
 msgid "Consider updating the input with the convert-ly script"
-msgstr "Considérer la conversion de l'entrée Ã  l'aide du script convert-ly"
+msgstr "Considérer la mise Ã  jour de l'entrée Ã  l'aide du script convert-ly"
 
 #~ msgid "Generate .dvi with LaTeX for LilyPond"
 #~ msgstr "Générer un fichier .dvi Ã  l'aide de LaTeX pour LilyPond"
@@ -1516,8 +1465,7 @@ msgstr "Consid
 #~ msgstr "ne peut produire le fichier map"
 
 #~ msgid "use output format EXT (tex [default], pdftex, ps, scm or as)"
-#~ msgstr ""
-#~ "utiliser le format de sortie EXT (tex (par défaut), pdftex, ps, scm ou as)"
+#~ msgstr "utiliser le format de sortie EXT (tex (par défaut), pdftex, ps, scm ou as)"
 
 #~ msgid "This binary was compiled with the following options:"
 #~ msgstr "Ce binaire a Ã©té compilé avec les options suivantes:"
@@ -1526,8 +1474,7 @@ msgstr "Consid
 #~ msgstr "%d arguments attendus"
 
 #~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr ""
-#~ "%s est loin d'être complet. Tous les construits n'ont pas Ã©té reconnus."
+#~ msgstr "%s est loin d'être complet. Tous les construits n'ont pas Ã©té reconnus."
 
 #~ msgid "Cleaning `%s'..."
 #~ msgstr "Nettoyage de Â« %s Â»..."
@@ -1554,13 +1501,10 @@ msgstr "Consid
 #~ msgstr "Aucun contexte disponible pour la note d'ornement"
 
 #~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr ""
-#~ "Notes d'ornement non attachées. On les rattache Ã  la dernière colonne "
-#~ "musicale."
+#~ msgstr "Notes d'ornement non attachées. On les rattache Ã  la dernière colonne musicale."
 
 #~ msgid "evalute EXPR as Scheme after .scm init is read"
-#~ msgstr ""
-#~ "évaluer EXPR comme un Schème après la lecture de initialisation .scm"
+#~ msgstr "évaluer EXPR comme un Schème après la lecture de initialisation .scm"
 
 #~ msgid "ly_get_mus_property (): Not a Music"
 #~ msgstr "ly_get_mus_property (): n'est pas de la musique"
@@ -1588,8 +1532,7 @@ msgstr "Consid
 #~ " \\propriété %s.%s \\pour Ã©craser #'%s = #%s"
 
 #~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr ""
-#~ "Type erroné pour la propriété: %s, type: %s, valeur trouvée: %s, type: %s"
+#~ msgstr "Type erroné pour la propriété: %s, type: %s, valeur trouvée: %s, type: %s"
 
 #~ msgid "too many notes for rest collision"
 #~ msgstr "trop de notes pour la pause en collision"
@@ -1598,8 +1541,7 @@ msgstr "Consid
 #~ msgstr "Option de schèmes:"
 
 #~ msgid "ly-get-trans-property: expecting a Translator_group argument"
-#~ msgstr ""
-#~ "ly-get-trans-property: s'attendait Ã  un argument de type Translator_group"
+#~ msgstr "ly-get-trans-property: s'attendait Ã  un argument de type Translator_group"
 
 #~ msgid "Oldest supported input version: %s"
 #~ msgstr "Version supportant les plus vieux formats: %s"
@@ -1660,9 +1602,7 @@ msgstr "Consid
 #~ msgstr "autoriser la mise au point de sortie"
 
 #~ msgid "don't output tuplets, double dots or rests, smallest is 32"
-#~ msgstr ""
-#~ "ne pas produire les tuplets, les doubles pointées ou les pauses, plus "
-#~ "petits que 32"
+#~ msgstr "ne pas produire les tuplets, les doubles pointées ou les pauses, plus petits que 32"
 
 #~ msgid "set FILE as default output"
 #~ msgstr "définir le FICHIER comme Ã©tant la sortie par défaut"
index ba9685ad0a0448f644fe625ca3c4154816047208..626f2fc250ce7350f237f2eeec4609accb42ce36 100644 (file)
   (string-append "@code{" (texify (scm->string x)) "}")
   )
 
+
+;;
+;; don't confuse users with #<procedure .. > syntax. 
+;; 
 (define (scm->string val)
-  (string-append
-   (if (self-evaluating? val) "" "'")
-   (call-with-output-string (lambda (port) (display val port)))
-  ))
+  (if (and (procedure? val) (symbol? (procedure-name val)))
+      (symbol->string (procedure-name val))
+      (string-append
+       (if (self-evaluating? val) "" "'")
+       (call-with-output-string (lambda (port) (display val port)))
+       )))
 
 (define (node name)
   (string-append
index f6187f3705234f82c20ba0b1ed30974bd69d8e8e..b3151aa99415b01b2e82ce56d67376a169851356 100644 (file)
      (ly-set-mus-property! m 'symbol 'NoteHead)
      (ly-set-mus-property! m 'grob-property 'style)
      (ly-set-mus-property! m 'grob-value t)
+     (ly-set-mus-property! m 'pop-first #t)
      m
    )
  )
index f72a401b67884b8c46c480b4c372d55a73b79f5f..116382de82236e6911b92f0703dc103016561222 100644 (file)
       )
 
 (define paper-style-sheet-alist
-  '(
-    ((8 * * braces 8) . "feta-braces8")
-    ((7 * * braces 7) . "feta-braces7")
-    ((6 * * braces 6) . "feta-braces6")
-    ((5 * * braces 5) . "feta-braces5")
-    ((4 * * braces 4) . "feta-braces4")
-    ((3 * * braces 3) . "feta-braces3")
-    ((2 * * braces 2) . "feta-braces2")
-    ((1 * * braces 1) . "feta-braces1")
-    ((0 * * braces 0) . "feta-braces0")
-    ))
+  `(
+    ((* * * braces *) . ("feta-braces0"
+                        "feta-braces1"
+                        "feta-braces2"
+                        "feta-braces3"
+                        "feta-braces4"
+                        "feta-braces5"
+                        "feta-braces6"
+                        "feta-braces7"
+                        "feta-braces8") )))
 
 ;; FIXME: what about this comment?:
+
+;; font-lookup seems a  little inefficient -- walking this entire list
+;; for a single font.
+;;
 ;;   should really have name/pt size at the front of the list.
 ;;   (also tried to vary the order of this list, with little effect)
 ;;
     ((-4 * * dynamic 7) . "feta-din7")
     ((-5 * * dynamic 6) . "feta-din6")
 
-    ((2 * * music 26) . "feta26")
-    ((1 * * music 23) . "feta23")
-    ((0 * * music 20) . "feta20")
-    ((-1 * * music 16) . "feta16")
-    ((-2 * * music 13) . "feta13")
-    ((-3 * * music 11) . "feta11")
-    ((-4 * * music 11) . "feta11")
-
-    ((2 * * ancient 26) . "parmesan26")
-    ((1 * * ancient 23) . "parmesan23")
-    ((0 * * ancient 20) . "parmesan20")
-    ((-1 * * ancient 16) . "parmesan16")
-    ((-2 * * ancient 13) . "parmesan13")
-    ((-3 * * ancient 11) . "parmesan11")
-    ((-4 * * ancient 11) . "parmesan11")
+    ((2 * * music 26) . ("feta26" "parmesan26"))
+    ((1 * * music 23) . ("feta23" "parmesan23"))
+    ((0 * * music 20) . ("feta20" "parmesan20"))
+    ((-1 * * music 16) . ("feta16" "parmesan16"))
+    ((-2 * * music 13) . ("feta13" "parmesan13"))
+    ((-3 * * music 11) . ("feta11" "parmesan11"))
+    ((-4 * * music 11) . ("feta11" "parmesan11"))
+    
+    ((2 * * ancient 26) . ("feta26" "parmesan26"))
+    ((1 * * ancient 23) . ("feta23" "parmesan23"))
+    ((0 * * ancient 20) . ("feta20" "parmesan20"))
+    ((-1 * * ancient 16) . ("feta16" "parmesan16"))
+    ((-2 * * ancient 13) . ("feta13" "parmesan13"))
+    ((-3 * * ancient 11) . ("feta11" "parmesan11"))
+    ((-4 * * ancient 11) . ("feta11" "parmesan11"))
 
     ((0 * * math 10) . "msam10")
     ((-1 * * math 10) . "msam10")
 ;; 
 (define (change-relative-size font-desc decrement)
   "return a FONT-DESCR with relative size decremented by DECREMENT"
-  (cons (- (car font-desc) decrement) (cdr font-desc))
+
+  (if (number? (car font-desc))
+      (cons (- (car font-desc) decrement) (cdr font-desc))
+      font-desc)
   )
 
 (define (change-rhs-size font-desc from to )
        (regexp-substitute/global #f from (cdr font-desc) 'pre to 'post))
 
   )
-
   
 ;; 
 (define (map-alist-keys func list)
                    ))
   )
 
-(set! font-list-alist
+;;
+;; make a kludged up paper-19 style sheet. Broken by virtual fonts.
+;;
+(if #f
+    (set! font-list-alist
       (cons
        (cons
        'paper19
        (map (lambda (x) (change-rhs-size x "20" "19"))
             paper20-style-sheet-alist))
-       font-list-alist))
+       font-list-alist)))
 
 (define (make-style-sheet sym)
   `((fonts . ,(append paper-style-sheet-alist
index 6f72730b9b857264aa0ccb251e9eb28ba87156ec..d3f8f6149f79f5fb8a7d61591336ee20877c9fd4 100644 (file)
@@ -9,6 +9,7 @@
 ;;;; staffspace (distances)
 
 ;;;; WARNING: the meta field should be the last one.
+;;;; WARNING: don't use anonymous functions for initialization. 
 
 ;; TODO: junk the meta field in favor of something more compact?
 (define all-grob-descriptions
     (LeftEdge
      . (
        (break-align-symbol . left-edge)
-       (X-offset-callbacks . (,Break_align_interface::alignment_callback))
        (X-extent-callback . ,Grob::point_dimension_callback)
        (breakable . #t)
        (space-alist . (
                        (staff-bar . (extra-space . 0.0))
                        (breathing-sign . (minimum-space  . 0.0))
                        (clef . (extra-space . 1.0))
-                       (first-note . (extra-space . 0.0))
+                       (first-note . (extra-space . 1.0))
                        (key-signature . (extra-space . 0.0))
                        ))
        (meta . ((interfaces . (break-aligned-interface item-interface ))))
        (style . default)
        (molecule-callback . ,tablature-molecule-callback)
        (Y-offset-callbacks  . (,Staff_symbol_referencer::callback))
+       (extra-offset . (0 . -0.65)) ;; UGH! TODO: Clean this up!
        (stem-attachment-function . ,tablature-stem-attachment-function)
        (meta . ((interfaces
                  . (rhythmic-head-interface
index 6771baa6c40bb07332ccb936e5058b8fac8afa36..795536e68f48ea9679a8a8de331e109e93735035 100644 (file)
 
 ;;(write standalone (current-error-port))
 
-; (set-debug-cell-accesses! #t)
 
 ;;; General settings
-
-
 ;; debugging evaluator is slower.
 
 ;(debug-enable 'debug)
@@ -23,6 +20,7 @@
 ;(read-enable 'positions)
 
 
+
 (define point-and-click #f)
 (define security-paranoia #f)
 (define midi-debug #f)
index cab888da1769c81757d8709a54289c8fe7fab46a..72f3635608a29caaf610fcc018aa144b930d4e80 100644 (file)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-(define (shift-duration-log music shift )
-  "Recurse through music, adding SHIFT to duration-log to any note
-encountered. This scales the music up by a factor 2^k."
+(define (shift-duration-log music shift dot)
+  "Recurse through music, adding SHIFT to duration-log and optionally 
+  a dot to any note encountered. This scales the music up by a factor 
+  2^shift * (2 - (1/2)^dot)"
   (let* ((es (ly-get-mus-property music 'elements))
          (e (ly-get-mus-property music 'element))
          (n  (ly-music-name music))
-        (f  (lambda (x)  (shift-duration-log x shift)))
+        (f  (lambda (x)  (shift-duration-log x shift dot)))
         )
     (if (or (equal? n "Note_req")
            (equal? n "Rest_req"))
        (let* (
-             (d (ly-get-mus-property music 'duration))
-             (cp (duration-factor d))
-             (nd (make-duration (+ shift (duration-log d))
-                                (duration-dot-count d)
-                                (car cp)
-                                (cdr cp)))
-         
-             )
+              (d (ly-get-mus-property music 'duration))
+              (cp (duration-factor d))
+              (nd (make-duration (+ shift (duration-log d))
+                                 (+ dot (duration-dot-count d))
+                                 (car cp)
+                                 (cdr cp)))
+              
+              )
          (ly-set-mus-property! music 'duration nd)
-       ))
-
+         ))
+    
     (if (pair? es)
         (ly-set-mus-property!
          music 'elements
          (map f es)))
-
+    
     (if (music? e)
         (ly-set-mus-property!
          music 'element
          (f e)))
-
+    
     music))
 
 
@@ -59,7 +60,7 @@ written by Rune Zedeler. "
          (if (equal?
               (ly-get-mus-property music 'iterator-ctor)
               Chord_tremolo_iterator::constructor)
-             (shift-duration-log music  (intlog2 (ly-get-mus-property music 'repeat-count)))
+             (shift-duration-log music  (intlog2 (ly-get-mus-property music 'repeat-count)) 0)
              )
           (ly-set-mus-property!
            music 'length Repeated_music::unfolded_music_length)
@@ -325,4 +326,16 @@ this is not an override
      )
 
 
-(define toplevel-music-functions (list check-start-chords voicify-music))
+;; switch it on here, so parsing and init isn't checked (too slow!)
+
+(define (switch-on-debugging m)
+  (set-debug-cell-accesses! 15000)
+  m
+  )
+
+(define toplevel-music-functions
+  (list check-start-chords
+       voicify-music
+
+; switch-on-debugging
+       ))
index ffa83e31ef311ce7a8090185d1b556c189fdee71..726aa92d4e1d0cf956f38a0d8b6a2ace3e434778 100644 (file)
@@ -21,7 +21,7 @@
 
 
 
-(music-property-description 'iterator-ctor c++-function? "Function to construct music-event-iterator object for this Music")
+(music-property-description 'iterator-ctor procedure? "Function to construct music-event-iterator object for this Music")
 (music-property-description 'duration duration? "Duration of this note/lyric.")
 (music-property-description 'metronome-count number? "How many beats in a minute?")
 (music-property-description 'span-type string? "What kind of spanner should be created?
@@ -49,6 +49,7 @@ TODO: consider making type into symbol ")
 (music-property-description 'last-pitch pitch? "The last pitch after relativization.")
 (music-property-description 'length procedure? "How to compute the duration of this music")
 (music-property-description 'numerator integer? "numerator of a time signature")
+(music-property-description 'once boolean? "Apply this operation only during one time step?")
 (music-property-description 'origin ly-input-location? "where was this piece of music defined?")
 (music-property-description 'penalty number? "Penalty for break hint.")
 (music-property-description 'pitch pitch? "the pitch of this note")
@@ -62,7 +63,7 @@ TODO: consider making type into symbol ")
 
 (music-property-description 'start-moment-function procedure? "Function to compute the negative length of
 starting grace notes.")
-
+(music-property-description 'string-number integer? "The number of the string in a String_number_req")
 (music-property-description 'symbol symbol? "Grob name to perform an override/revert on.")
 (music-property-description 'text markup? "markup expression to be printed")
 ;; markup?
index 58ec903adc5d970595058ae04b92fb4b599116df..9267948f695e853fba46c22898fbf89b329fb27a 100644 (file)
@@ -9,7 +9,7 @@
 
 ; The TabNoteHead stem attachment function.
 (define (tablature-stem-attachment-function style duration)
-  (cons 0.0 1.0)
+  (cons 0.0 0.5) ;; UGH!
 )
 
 ; The TabNoteHead molecule callback.
 
 
 
+(define guitar-tunings '(4 -1 -5 -10 -15 -20))
 
 ; end of tablature functions
 
 
+(define (make-molecule-boxer line-thick x-padding y-padding callback)
+   "Makes a routine that adds a box around the grob parsed as argument"
+  (define (molecule-boxer grob)
+  (let*
+   (
+    (mol    (callback grob))
+    (x-ext (widen-interval (ly-get-molecule-extent mol 0) x-padding))
+    (y-ext (widen-interval (ly-get-molecule-extent mol 1) y-padding))
+    (x-rule (box-molecule (widen-interval x-ext line-thick)
+                              (cons 0 line-thick)))
+    (y-rule (box-molecule (cons 0 line-thick) y-ext))
+    )
+    
+    (set! mol (ly-combine-molecule-at-edge mol 0 1 y-rule x-padding))
+    (set! mol (ly-combine-molecule-at-edge mol 0 -1  y-rule x-padding))
+    (set! mol (ly-combine-molecule-at-edge mol 1 1  x-rule 0))  
+    (set! mol (ly-combine-molecule-at-edge mol 1 -1 x-rule 0))
+    
+    mol
+ ))
+ molecule-boxer
+ )
+
+
 (define (arg->string arg)
   (cond ((number? arg) (inexact->string arg 10))
        ((string? arg) (string-append "\"" arg "\""))
 ;; silly, use alist? 
 (define (find-notehead-symbol duration style)
   (case style
-   ((xcircle) (cons "2xcircle" "music"))
-   ((harmonic) (cons "0neo_mensural" "music"))
+   ((xcircle) "2xcircle")
+   ((harmonic) "0neo_mensural")
    ((baroque) 
     ;; Oops, I actually would not call this "baroque", but, for
     ;; backwards compatibility to 1.4, this is supposed to take
     ;; brevis, longa and maxima from the neo-mensural font and all
     ;; other note heads from the default font.  -- jr
     (if (< duration 0)
-       (cons (string-append (number->string duration) "neo_mensural") "ancient")
-       (cons (number->string duration) "music")))
+       (string-append (number->string duration) "neo_mensural")
+       (number->string duration)))
    ((mensural)
-    (cons (string-append (number->string duration) (symbol->string style))
-     "ancient"))
+    (string-append (number->string duration) (symbol->string style)))
    ((neo_mensural)
-    (cons (string-append (number->string duration) (symbol->string style))
-     "ancient"))
+    (string-append (number->string duration) (symbol->string style)))
    ((default)
     ;; The default font in mf/feta-bolletjes.mf defines a brevis, but
     ;; neither a longa nor a maxima.  Hence let us, for the moment,
     ;; should look exactly like the brevis of the default font, but
     ;; with a stem exactly like that of the quarter note. -- jr
     (if (< duration -1)
-       (cons (string-append (number->string duration) "neo_mensural") "ancient")
-       (cons (number->string duration) "music")))
+       (string-append (number->string duration) "neo_mensural")
+       (number->string duration)))
    (else
-    (cons (string-append (number->string (max 0 duration)) (symbol->string style))
-     "music"))))
+    (if (string-match "vaticana*|hufnagel*|medicaea*" (symbol->string style))
+       (symbol->string style)
+       (string-append (number->string (max 0 duration))
+                      (symbol->string style))))))
 
 
 (define (note-head-style->attachment-coordinates style duration)
@@ -188,43 +213,6 @@ centered, X==1 is at the right, X == -1 is at the left."
      '(1.0 . 0.0)
      )))
 
-(define (find-timesig-symbol nom denom style)
-  (case style
-   ((mensural)
-    (cons (string-append
-            "mensural"
-            (number->string nom)
-            "/"
-            (number->string denom))
-         "ancient"))
-   ((neo_mensural)
-    (cons (string-append
-            "neo_mensural"
-            (number->string nom)
-            "/"
-            (number->string denom))
-         "ancient"))
-   ((numbered)
-    (cons (string-append
-          (number->string nom)
-          "/"
-          (number->string denom))
-         "music"))
-   (else
-    ;; default: use "C" style when possible, otherwise return ""
-    (cons
-     (case nom
-       ((2)
-       (case denom
-         ((2) "C2/2")
-         (else "")))
-       ((4)
-       (case denom
-         ((4) "C4/4")
-         (else "")))
-       (else ""))
-     "music"))))
-
 (define (string-encode-integer i)
   (cond
    ((= i  0) "o")
@@ -234,6 +222,6 @@ centered, X==1 is at the right, X == -1 is at the left."
          (string-encode-integer (quotient i 26))))))
 
 
+(define ((every-nth-bar-number-visible n) barnum) (= 0 (modulo barnum n)))
 
-
-
+(define (default-bar-number-visibility barnum) (> barnum 1))
index 4f997945c4831e90e319c231383f17a6e752eabf..d6e6c9d54364b4f91458e6a7db2def9bdf2b16c2 100644 (file)
   (begin
                                        ; uncomment for some stats about lily memory      
                                        ;               (display (gc-stats))
-    (string-append "\n\\EndLilyPondOutput"
+    (string-append "\n\\EndLilyPondOutput\n"
                                        ; Put GC stats here.
                   )))
 
index 33b6448e41a320a67857339319409e587cc76cba..14043e67887dc946e054915799efcf8a6294d7a7 100644 (file)
@@ -127,6 +127,7 @@ using barchecks in polyphonic music.")
     still counted.  Bar generation will resume according to that
     count if this property is set to zero.
 ")
+(translator-property-description 'barNumberVisibility procedure? "Procedure that takes an int and returns whether the corresponding bar number should be printed")
 (translator-property-description 'beamMelismaBusy boolean? "Signal if a beam is set when automaticMelismata is set")
 (translator-property-description 'beatLength moment? "The length of one beat in this time signature.")
 (translator-property-description 'breakAlignOrder list? "Defines the order in which
@@ -213,6 +214,8 @@ procedure? "visibility-lambda function for explicit Key changes;
 extra natural sign before accidentals changing from a non-natural to 
 another non-natural.
 ")
+
+(translator-property-description 'finalizations list? "List of expressions to evaluate before proceeding to next time step. Internal variable.")
 (translator-property-description 'followVoice boolean?
                                 "if set, note heads are tracked  across staff switches by a thin line")
 (translator-property-description 'fontSize integer?
@@ -222,6 +225,8 @@ 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 'graceAccidentalSpace number? "amount space to alot for an accidental")
 (translator-property-description 'graceAlignPosition dir? "put the grace note before or after the main note?")
+(translator-property-description 'highStringOne boolean? "Whether the 1st string is the string with
+highest pitch on the instrument (used by the automatic string selector).")
 (translator-property-description 'instr markup? "see @code{instrument}")
 (translator-property-description 'instrument markup? " If @code{Instrument_name_engraver}
 @cindex Instrument_name_engraver
@@ -322,6 +327,8 @@ help with debugging large scores.")
 (translator-property-description 'split-interval boolean? "set if part-combiner separated voices based on splitInterval.")
 (translator-property-description 'squashedPosition integer? " Vertical position of
 squashing for Pitch_squash_engraver.")
+(translator-property-description 'stringOneTopmost boolean? "Whether the 1st string is printed on the
+top line of the tablature.")
 (translator-property-description 'stavesFound list? "list of all staff-symbols found.")
 (translator-property-description 'stanza markup? "Stanza `number' to print at start of a verse. Use in LyricsVoice context.")
 
index a2d6dd846a0918734a7e651007acd4efbf77fb6a..47db68f0b36f31bdb9e4caeb2ab69fc5bd877ce0 100644 (file)
@@ -46,10 +46,17 @@ import __main__
 
 # Handle bug in Python 1.6-2.1
 #
-# there are recursion limits for some patterns in Python 1.6 til 2.1. 
+# there are recursion limits for some patterns in Python 1.6 til 2.1.
 # fix this by importing the 1.5.2 implementation pre instead. Fix by Mats.
 
-if float (sys.version[0:3]) < 2.2:
+
+## We would like to do this for python 2.2 as well, unfortunately
+## python 2.2 has another bug, see Sf.net bugtracker
+##
+## https://sourceforge.net/tracker/?func=detail&aid=604803&group_id=5470&atid=105470
+## 
+
+if float (sys.version[0:3]) <= 2.1:
        try:
                import pre
                re = pre
@@ -106,6 +113,8 @@ kpse = os.popen ('kpsexpand \$TEXMF').read()
 kpse = re.sub('[ \t\n]+$','', kpse)
 type1_paths = os.popen ('kpsewhich -expand-path=\$T1FONTS').read ()
 
+binary = 'lilypond'
+#binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
 environment = {
        # TODO: * prevent multiple addition.
        #       * clean TEXINPUTS, MFINPUTS, TFMFONTS,
@@ -190,22 +199,48 @@ class LatexPaper:
 
                cmd = "latex '\\nonstopmode \input %s'" % fname
                if verbose_p:
-                       sys.stderr.write ("Invoking `%s' as pipe" % cmd) 
-               p = os.popen(cmd)
-               ln = p.readline()
-               while ln:
+                       sys.stderr.write ("Invoking `%s' as pipe" % cmd)
+               try:
+                       status = quiet_system (cmd, "Latex for finding dimensions")
+               except:
+                       sys.stderr.write (_("Invoking LaTeX failed.") + '\n' )
+                       sys.stderr.write (_("This is the error log:\n") + '\n')
+
+                       lns = open ('lily-tmp.log').readlines()
+
+                       countdown = -3
+                       for ln in lns:
+                               sys.stderr.write (ln)
+                               if re.match('^!', ln):
+                                       countdown = 3
+
+                               if countdown == 0:
+                                       break
+                               
+                               if countdown > 0:
+                                       countdown = countdown -1
+
+                       sys.stderr.write ("  ... (further messages elided)...\n")
+                       sys.exit (1)
+                       
+               lns = open ('lily-tmp.log').readlines()
+               for ln in lns:
                        ln = string.strip(ln)
                        m = re_dim.match(ln)
                        if m:
                                if m.groups()[0] in ('textwidth', 'columnsep'):
                                        self.__dict__['m_%s' % m.groups()[0]] = float(m.groups()[1])
-                       ln = p.readline()
+                                       
                try:
                        os.remove (fname)
                        os.remove (os.path.splitext(fname)[0]+".aux")
                        os.remove (os.path.splitext(fname)[0]+".log")
                except:
                        pass
+
+               if not self.__dict__.has_key ('m_textwidth'):
+                       raise 'foo!'
+               
        def get_linewidth(self):
                if self.m_num_cols == 1:
                        w = self.m_textwidth
@@ -417,7 +452,7 @@ output_dict= {
 <p>
 <a href="%(fn)s.png">
 <img border=0 src="%(fn)s.png" alt="[picture of music]">
-</a>
+</a><p>
 @end html
 ''',
                }
@@ -430,7 +465,11 @@ def output_verbatim (body, small):
                body = re.sub ('>', '&gt;', body)
                body = re.sub ('<', '&lt;', body)
        elif __main__.format == 'texi':
-               body = re.sub ('([@{}])', '@\\1', body)
+               
+               # clumsy workaround for python 2.2 pre bug.
+               body = re.sub ('@', '@@', body)
+               body = re.sub ('{', '@{', body)
+               body = re.sub ('}', '@}', body)
 
        if small:
                key = 'output-small-verbatim'
@@ -1035,7 +1074,9 @@ def quiet_system (cmd, name):
        return system (cmd)
 
 def get_bbox (filename):
-       system ('gs -sDEVICE=bbox -q  -sOutputFile=- -dNOPAUSE %s -c quit > %s.bbox 2>&1 ' % (filename, filename))
+
+       # gs bbox device is ugh, it always prints of stderr.
+       system ('gs -sDEVICE=bbox -q  -sOutputFile=- -dNOPAUSE %s -c quit > %s.bbox 2>&1' % (filename, filename))
 
        box = open (filename + '.bbox').read()
        m = re.match ('^%%BoundingBox: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)', box)
@@ -1057,9 +1098,9 @@ def make_pixmap (name):
        x = (2* margin + bbox[2] - bbox[0]) * res / 72.
        y = (2* margin + bbox[3] - bbox[1]) * res / 72.
 
-       cmd = r'''gs -g%dx%d -sDEVICE=pnggray  -dTextAlphaBits=4 -dGraphicsAlphaBits=4  -q -sOutputFile=- -r%d -dNOPAUSE %s %s -c quit  > %s'''
+       cmd = r'''gs -g%dx%d -sDEVICE=pnggray  -dTextAlphaBits=4 -dGraphicsAlphaBits=4  -q -sOutputFile=%s -r%d -dNOPAUSE %s %s -c quit '''
        
-       cmd = cmd % (x, y, res, name + '.trans.eps', name + '.eps',name + '.png')
+       cmd = cmd % (x, y, name + '.png', res, name + '.trans.eps', name + '.eps')
        status = 0
        try:
                status = system (cmd)
@@ -1107,8 +1148,8 @@ def compile_all_files (chunks):
                        if g_outdir:
                                lilyopts = lilyopts + '--dep-prefix=' + g_outdir + '/'
                texfiles = string.join (tex, ' ')
-               cmd = 'lilypond --header=texidoc %s %s %s' \
-                     % (lilyopts, g_extra_opts, texfiles)
+               cmd = '%s --header=texidoc %s %s %s' \
+                     % (binary, lilyopts, g_extra_opts, texfiles)
 
                system (cmd)
 
index e8c871ec36d1852d72b0dce41db36f6ff2dd5a62..1dfae0331396132ae7dca6d51b624bc4a29bcc59 100644 (file)
@@ -130,9 +130,13 @@ def user_error (s, e=1):
                sys.exit (e)
        
 def error (s):
-       '''Report the error S.  Exit by raising an exception. Please
-       do not abuse by trying to catch this error. If you do not want
-       a stack trace, write to the output directly.
+       '''Report the error S.
+
+       If verbose is set, exit by raising an exception. Otherwise,
+       simply sys.exit().
+
+       Please do not abuse by trying to catch this error. If you do
+       not want a stack trace, write to the output directly.
 
        RETURN VALUE
 
@@ -141,7 +145,10 @@ def error (s):
        '''
        
        progress (_ ("error: ") + s)
-       raise _ ("Exiting ... ")
+       if verbose_p:
+               raise _ ("Exiting ... ")
+       else:
+               sys.exit (2)
 
 def getopt_args (opts):
        '''Construct arguments (LONG, SHORT) for getopt from  list of options.'''
@@ -321,6 +328,7 @@ errorport = sys.stderr
 keep_temp_dir_p = 0
 verbose_p = 0
 preview_p = 0
+lilypond_error_p = 0
 preview_resolution = 90
 pseudo_filter_p = 0
 latex_cmd = 'latex'
@@ -509,8 +517,12 @@ def run_lilypond (files, dep_prefix):
                       + _ ("Please submit a bug report to bug-lilypond@gnu.org") + "\n")
 
        if status:
-               error ( "\n" \
-                       + _ ("LilyPond failed on the input file (exit status %d).") % exit_status + "\n")
+               sys.stderr.write ( "\n" \
+                       + _ ("LilyPond failed on an input file (exit status %d).") % exit_status + "\n")
+               sys.stderr.write (_("Trying to salvage the rest.") +'\n\n')
+
+               global lilypond_error_p
+               lilypond_error_p = 1
                
 
 def analyse_lilypond_output (filename, extra):
@@ -600,6 +612,7 @@ def one_latex_definition (defn, first):
 ly_paper_to_latexpaper =  {
        'a4' : 'a4paper',
        'letter' : 'letterpaper', 
+       'a3' : 'a3paper'
 }
 
 #TODO: should set textheight (enlarge) depending on papersize. 
@@ -1105,7 +1118,8 @@ if files:
                        
        os.chdir (original_dir)
        cleanup_temp ()
-       
+
+       sys.exit (lilypond_error_p)
 else:
        help ()
        user_error (_ ("no files specified on command line"), 2)
index fd680ff7e47c0eb8420d93633ab35549f0467d8c..653afeb09cd1d3922d2c230a74d734e22ee33c96 100644 (file)
@@ -8,6 +8,13 @@
 %%    makes LaTeX break on the \\ in:
 %%        \ifx\lilypondfoo\undefined\else{\lilypondfoo\\}\fi
 %%
+% The feta characters for use in titles
+\input feta20.tex
+%
+\font\fetasixteen=feta16
+\def\fetafont{\fetasixteen}
+\def\fetachar#1{\hbox{\fetasixteen#1}}
+%
 \def\makelilypondtitle
 {
   \begin{center}