+++ /dev/null
-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.
-
-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.
}
+@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,
--- /dev/null
+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.
+
--- /dev/null
+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.
+
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
-@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
<!--- @@WEB-TITLE@@=Installation Instructions --->
@end html
-@node Top, , , (dir)
-@top
-
@contents
@chapter INSTALL - compiling and installing GNU LilyPond
@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.
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
@lilypondfile{feta16list.ly}
+@c parmesan is too big. Apparently pythons re's choke on this.
+@c @lil ypondfile{parmesan16list.ly}
+
+
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
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
@macro refbugs
@strong{BUGS}
-
@end macro
@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
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
@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
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
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 }
>
@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 {
}
@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
@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.
@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]
@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]
@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
@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}.
@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}.
@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}
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
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}
\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},
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
@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
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 <
\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
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
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
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
@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]
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.
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
@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
\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]
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
@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
@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 }
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 {
}
@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]
}
@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 }
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
@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.
@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]
@end lilypond
-Repeats brackets are @internalsref{VoltaBracket} grobs.
+Repeats brackets are @internalsref{VoltaBracket} objects.
@node Tremolo repeats
@subsection Tremolo repeats
}
@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{@}}.
}
@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
@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
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.
>
@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]
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]
>
@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::
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
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
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,
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.
\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
@cindex whole rests for a full measure
-The grob for this object is @internalsref{MultiMeasureRest}.
+The object for this object is @internalsref{MultiMeasureRest}.
@refbugs
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
@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
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{>}.
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 grobs
-@subsection Tuning groups of grobs
+@node Tuning groups of objects
+@subsection Tuning groups of objects
-@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 = #'()
@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}
\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
@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.
@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)
@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
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
@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},
@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.
@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+)
@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:
@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.
@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
@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 @{
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.
@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
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.
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
@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
@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
@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.
@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
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
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
@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
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
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
@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
@}
@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.
@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
@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
(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
<
\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 <
@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
\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
@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.
@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
\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
\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
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
@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
@}
@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
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
\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
@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
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:
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@}
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}
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
@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
@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.
#
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
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 \
$(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 && \
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
#
* 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
--- /dev/null
+
+CONTRIBUTORS
+
+Graham Percival
+Rune Zedeler
+Jeremie Lumbroso
+Juergen Reuter
+
+
+BUG HUNTERS
+
+Karl-Johan Karlsson
+Karl Berry
+Werner Lemberg
+Jeremie Lumbroso
+Erik Sandberg
+
-foo:
- echo "This is HEAD. Go away"
- exit 1
-
PACKAGE_NAME = LilyPond
MAJOR_VERSION=1
MINOR_VERSION=7
# 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@"
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
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
+++ /dev/null
-#!/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
-
+++ /dev/null
-#!/bin/sh
-# ps-to-pngs, convert PS to multiple pngs
-
-ps-to-gifs --png $*
+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
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.5.6
+Standards-Version: 3.5.7
Package: lilypond
Architecture: any
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.
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.5.6
+Standards-Version: 3.5.7
Package: lilypond
Architecture: any
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.
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
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
dh_md5sums
dh_builddeb
-binary-arch: DH_OPTIONS=-a
+binary-arch: DH_OPTIONS=-s
binary-arch: build install
dh_testdir
dh_testroot
}
+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.
*/
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;
else
return -1; /* not found */
}
-
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);
#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)
{
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)
{
else
return 0;
}
-
};
template<class T, class V>
}
+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
/// 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); }
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
}
-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)
{
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)
*this = multiply (*this,p2);
}
-void
-Polynomial::operator += (Polynomial const &p)
-{
- *this = add ( *this, p);
-}
-void
-Polynomial::operator -= (Polynomial const &p)
-{
- *this = subtract (*this, p);
-}
+++ /dev/null
-\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 |
-}
+++ /dev/null
-\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 |
-}
+++ /dev/null
-\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
-}
".\\\\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"
% NOT FINISHED!!!!
\include "deutsch.ly"
-\include "paper19.ly"
+
+
+%% 19 is broken --hwn.
+%\include "paper19.ly"
\version "1.5.71"
\header {
#`(,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
+}
--- /dev/null
+\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
%\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?
}
>
+ >
}
--- /dev/null
+\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 }
+}
parens are also not seen by accidentals.
"
- }
+}
#(define (parenthesize-callback callback)
"Construct a function that will do CALLBACK and add parentheses.
(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
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
)
)
--- /dev/null
+
+\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}}
--- /dev/null
+\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
+ }
+}
+
\version "1.5.68"
\header {
-texidoc = "Scripts may b4e stacked."
+texidoc = "Scripts may be stacked."
}
-\score { \notes { c''->-. } }
+
+\score { \notes { c'''->-. } }
\score { \notes
\context Voice
-{\slurDown c4 ( g4 ) c''4
+{ \property Staff.minimumVerticalExtent \unset
+ \slurDown c4 ( g4 ) c''4
}
\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 }
depth = ../..
-EXAMPLES=sondag-morgen
+examples=sondag-morgen
LOCALSTEPMAKE_TEMPLATES=ly mutopia
include $(depth)/make/stepmake.make
\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>
}
}
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 {
}
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,>
}
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 {
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 {
}
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 {
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 {
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 |
}
}
}
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 {
\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>
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
\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 <
include $(depth)/make/stepmake.make
-TITLE=LilyPond Feature Tests
+TITLE=LilyPond Tips and Tricks
\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? |
\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
\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
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
\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
\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
\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
\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
+ }
}
}
\score {
\notes {
- \property Staff.TimeSignature \override #'style = #'oldC4/4
- \property Staff.TimeSignature \override #'font-family = #'ancient
+ \property Staff.TimeSignature \override #'style = #'neo_mensural
s1
}
}
--- /dev/null
+\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 "|."
+ }
+}
+
-\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
%}
+% 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
--- /dev/null
+\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
+} }
\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
+ }
+ }
}
--- /dev/null
+\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
+ }
+ }
+}
\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 "|"
\[
\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
\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
+ }
}
}
--- /dev/null
+\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
+}
+}
+}
\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
+ }
+ }
}
"}
\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]
+++ /dev/null
-\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
-}
-}
-}
-\version "1.5.68"
+\version "1.6.2"
%{
%}
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
>
>
}
%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
>
>
-
- \paper {
-
- \translator {
- \OrchestralScoreContext
- }
- \translator { \PianoStaffContext
- \consists "Instrument_name_engraver"
- }
- \translator { \StaffContext
- \consists "Instrument_name_engraver"
- }
- }
-
+\paper {}
\midi {
\tempo 4 =96 }
}
\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 > }
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:
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)
Grob *me = unsmob_grob (smob);
bool smaller = false;
bool parens = false;
-
+
bool caut = to_boolean (me->get_grob_property ("cautionary"));
if (caut)
{
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))
{
/*
preferably no name for the default style.
- */
+ */
style = "";
}
-
Font_metric *fm = 0;
if (smaller)
{
Molecule mol;
for (SCM s = me->get_grob_property ("accidentals");
- gh_pair_p (s); s= gh_cdr (s))
+ gh_pair_p (s); 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)
}
+
Font_metric *
All_font_metrics::find_font (String name)
{
m = iter->pending_moment ();
}
- delete iter;
+ scm_gc_unprotect_object (iter->self_scm());
+
return ps;
}
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;
}
SCM proc = me->get_grob_property ("break-glyph-function");
g = gh_call2 (proc, g, scm_int2num (bsd));
}
-
if (!gh_string_p (g))
{
};
-/*
- TODO: more advanced formatting via SCM function, perhaps barnumbers
- every 5 measures? */
-
void
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 ()));
+ }
}
}
}
+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)
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
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;;
&&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
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;
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");
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];
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;
offsets[next_idx] = extents[idx][RIGHT] + distance;
else if (type == ly_symbol2scm("minimum-space"))
offsets[next_idx] = extents[idx][RIGHT] >? distance;
-
+
idx = next_idx;
}
{
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 ();
{
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 ()
: 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
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
{
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 ()
{
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");
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 ();
}
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);
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))
}
+/*
+ The duration _until_ the next barline.
+ */
Moment
Completion_heads_engraver::next_barline_moment ( )
{
{
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;
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)
/* 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
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
+++ /dev/null
-/*
- 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;
-}
-
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,
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));
/*
- repeated-music-iterator.cc -- implement Folded_repeat_iterator
+ folded-repeat-iterator.cc -- implement Folded_repeat_iterator
source file of the GNU LilyPond music typesetter
{
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)
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
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 ();
}
}
alternative_iter_->process (m - main_length_mom_);
if (!alternative_iter_->ok ())
{
- delete alternative_iter_;
+ alternative_iter_->quit();
alternative_iter_ =0;
}
}
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 ();
}
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());
}
}
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);
Font_metric::Font_metric ()
{
description_ = SCM_EOL;
-
+ self_scm_ = SCM_EOL;
smobify_self ();
}
}
+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_;
}
}
+
+
+
+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);
+}
#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)
{
return dynamic_cast<Spanner*> (g);
}
+
+Paper_column*
+to_pc (Grob* g)
+{
+ return dynamic_cast<Paper_column*> (g);
+}
+}
Global_translator::one_time_step ()
{
}
+
void
Global_translator::start ()
{
w = sneaky_insert_extra_moment (w);
// printf ("proccing %s\n ", w.string ().to_str0 ());
-
-
-
if (first)
{
first = false;
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;
+}
#include "global-translator.hh"
#include "warn.hh"
-
-Grace_iterator::~Grace_iterator ()
-{
- // child_iter_ = 0;
-}
-
-
void
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
{
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);
return Moment::compare (a.end_, b.end_);
}
+
class Grob_pq_engraver: public Engraver
{
public:
}
}
+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
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);
}
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",
/*
fixme: default should be no callback.
*/
-
+ self_scm_ = SCM_EOL;
pscore_=0;
status_ = 0;
original_ = 0;
: dim_cache_ (s.dim_cache_)
{
original_ = (Grob*) &s;
+ self_scm_ = SCM_EOL;
+
immutable_property_alist_ = s.immutable_property_alist_;
mutable_property_alist_ = SCM_EOL;
}
SCM
-Grob::do_derived_mark ()
+Grob::do_derived_mark () const
{
return SCM_EOL;
}
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);
};
#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
{
{
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);
};
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));
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);
};
{
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_;
+++ /dev/null
-/*
- 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 */
-
{
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:
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 ();
};
#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);
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);
{
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;
};
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;
Interpretation_context_handle (Interpretation_context_handle const&);
Translator_group * report_to () const;
+ void quit ();
private:
Translator_group * report_to_;
void down ();
protected:
virtual void discretionary_processing ();
void copy_breakable_items ();
- virtual SCM do_derived_mark ();
+ virtual SCM do_derived_mark () const;
};
}
#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
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
} _ ## 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 */
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_;
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);
#include "moment.hh"
#include "virtual-methods.hh"
#include "interpretation-context-handle.hh"
-#include "cxx-function-smob.hh"
+#include "smobs.hh"
/**
---
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,
/** 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
{
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);
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
{
public:
VIRTUAL_COPY_CONS (Music_iterator);
- static SCM constructor_cxx_function;
+ DECLARE_SCHEME_CALLBACK(constructor, ());
/* construction */
protected:
virtual void process (Moment);
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;
{
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) ;
{
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);
};
{
public:
VIRTUAL_COPY_CONS (Music_iterator);
- static SCM constructor_cxx_function;
- /* construction */
+ DECLARE_SCHEME_CALLBACK(constructor, ());
protected:
virtual void process (Moment);
};
{
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);
};
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&);
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;
protected:
Moment here_mom_;
Music_iterator * iter_;
- Protected_scm list_;
+ SCM list_;
SCM cursor_;
virtual void next_element (bool side_effect);
{
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 ();
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);
};
#define SIMULTANEOUS_MUSIC_ITERATOR_HH
#include "music-iterator.hh"
-#include "cons.hh"
class Simultaneous_music_iterator : public Music_iterator
{
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);
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
#include "string.hh"
#include "interval.hh"
#include "protected-scm.hh"
+#include "parray.hh"
/**
class for reading and mapping a file.
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_;
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:
{
public:
VIRTUAL_COPY_CONS (Music_iterator);
- static SCM constructor_cxx_function;
+ DECLARE_SCHEME_CALLBACK(constructor, ());
/* construction */
protected:
virtual void process (Moment);
SCM properties_scm_;
DECLARE_SMOBS (Translator, dummy);
+
public:
+ Global_translator * top_translator () const;
TRANSLATOR_DECLARATIONS(Translator);
/**
try to fit the request in this engraver
--- /dev/null
+
+/*
+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 */
+
Interpretation_context_handle::~Interpretation_context_handle ()
{
- if (report_to_)
- down ();
+ /*
+ Don't do
+
+ if (report_to_)
+ down ();
+
+ with GC, this is asynchronous.
+ */
}
void
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
Translator_group*
Interpretation_context_handle::report_to ()const
{
+
return report_to_;
}
}
SCM
-Item::do_derived_mark ()
+Item::do_derived_mark ()const
{
if (broken_to_drul_[LEFT])
scm_gc_mark (broken_to_drul_[LEFT]->self_scm ());
#include "lookup.hh"
#include "lily-guile.hh"
#include "lily-proto.hh"
-
+#include "accidental-interface.hh"
struct Key_signature_interface
{
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))
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) ;
|| 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);
#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
ALPHAWORD {A}+
DIGIT {N}
UNSIGNED {N}+
+E_UNSIGNED \\{N}+
FRACTION {N}+\/{N}+
INT -?{UNSIGNED}
REAL ({INT}\.{N}*)|(-?\.{N}+)
yylval.i = String_convert::dec2int (String (YYText ()));
return UNSIGNED;
}
+ {E_UNSIGNED} {
+ yylval.i = String_convert::dec2int (String (YYText () +1));
+ return E_UNSIGNED;
+ }
\" {
start_quote ();
\/\+ {
return CHORD_BASS;
}
+ \/ {
+ return CHORD_SLASH;
+ }
\^ {
return CHORD_CARET;
}
return UNSIGNED;
}
+
[{}] {
return YYText ()[0];
return E_TILDE;
case '\\':
return E_BACKSLASH;
+
default:
return E_CHAR;
}
* "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
#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)
{
int n;
char * str = gulp_file (s, &n);
String result (str);
- delete str;
+ delete[] str;
if (verbose_global_b)
progress_indication ("]");
scm_init_funcs_->push (f);
}
-extern void init_cxx_function_smobs ();
-
void
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)) ();
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),
{
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;
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>
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;
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
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);
}
}
}
-
-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*
: Music (l)
{
set_mus_property ("iterator-ctor",
- Lyric_combine_music_iterator::constructor_cxx_function);
+ Lyric_combine_music_iterator::constructor_proc);
}
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 */
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) ?
}
SCM
-fontify_atom (Font_metric * met, SCM f)
+fontify_atom (Font_metric const * met, SCM f)
{
if (f == SCM_EOL)
return f;
#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)
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)
{
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;
}
Music_iterator::music_length_mom () const
{
return music_length_;
-
}
Moment
}
-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;
}
/*
Iterator::try_music
*/
-
Music_iterator*
Music_iterator::try_music (Music *m) 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()
+{
+}
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
Music::Music ()
{
+ self_scm_ = SCM_EOL;
immutable_property_alist_ = SCM_EOL;
mutable_property_alist_ = SCM_EOL;
smobify_self ();
{
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,
Music::Music (SCM l)
{
+ self_scm_ = SCM_EOL;
immutable_property_alist_ = l;
mutable_property_alist_ = SCM_EOL;
smobify_self ();
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
{
&& get_direction () == a->get_direction ();
}
-
-
+ADD_MUSIC(String_number_req);
{"lyrics", LYRICS},
{"key", KEY},
{"mark", MARK},
+ {"once", ONCE},
{"pitch", PITCH},
{"time", TIME_T},
{"times", TIMES},
}
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))
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)
return gh_number_p (result) ? gh_scm2double (result) : 0.0;
}
-
int
Note_head::get_balltype (Grob*me)
{
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);
}
*/
*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))
Grob *stem = Note_column::get_stem (it);
- if (!stem)
+ if (!stem || !stem->live ())
{
if (d == RIGHT && Separation_item::has_interface (it))
{
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;
(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"
/*
todo: use symbols and hashtable idx?
+
+
*/
Font_metric *
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;
}
*/
+#include <iostream.h>
#include <ctype.h>
#include "translator-def.hh"
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;
// needed for bison.simple's malloc () and free ()
-#include <malloc.h>
+// #include <malloc.h>
#include <stdlib.h>
%token NAME
%token PITCHNAMES
%token NOTES
+%token ONCE
%token PAPER
%token PARTIAL
%token PENALTY
%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
%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
%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
%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
}
| 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($$);
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 */
/*
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);
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;
}
| 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);
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 ());
}
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);
;
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);
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);
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)
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.
*/
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)
$$->set_spot (THIS->here_input ());
csm-> set_mus_property ("context-type", $2);
+
}
| PROPERTY STRING '.' STRING REVERT embedded_scm {
Music *t = new Music (SCM_EOL);
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;
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 ());
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 ());
}
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 ());
}
| '|' {
$$ = 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 ();
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"));
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);
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 ());
$$ = 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"));
}
;
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;
+ }
;
fraction:
FRACTION { $$ = $1; }
| UNSIGNED '/' UNSIGNED {
- $$ = gh_cons (gh_int2scm ($1), gh_int2scm ($3));
+ $$ = scm_cons (gh_int2scm ($1), gh_int2scm ($3));
}
;
$$ = SCM_EOL;
}
| figure_list br_bass_figure {
- $$ = gh_cons ($2, $1);
+ $$ = scm_cons ($2, $1);
}
;
{
$$ = SCM_EOL;
}
- | '/' steno_tonic_pitch {
+ | CHORD_SLASH steno_tonic_pitch {
$$ = $2;
}
;
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 (),
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
{
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
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
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;
}
**** 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!
*/
: Music (l)
{
set_mus_property ("iterator-ctor",
- Part_combine_music_iterator::constructor_cxx_function);
+ Part_combine_music_iterator::constructor_proc);
}
void
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 ();
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
{
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 ()));
}
if (finish_mom_ <= m )
{
- delete child_iter_;
+ child_iter_->quit();
child_iter_ = 0;
}
}
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());
}
#include "music.hh"
#include "translator-def.hh"
#include "translator-group.hh"
+#include "global-translator.hh"
bool check_grob(Music *mus, SCM sym);
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;
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);
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)
{
}
+
IMPLEMENT_CTOR_CALLBACK (Pop_property_iterator);
IMPLEMENT_CTOR_CALLBACK (Push_property_iterator);
IMPLEMENT_CTOR_CALLBACK (Property_iterator);
IMPLEMENT_CTOR_CALLBACK (Property_unset_iterator);
+
: 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
/*
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)
{
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);
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
Grob_info i2 (musical_column_);
i2.origin_trans_ = this;
-
announce_grob (i1);
announce_grob (i2);
-
-
}
}
}
stop_translation_timestep ();
+
+ apply_finalizations ();
check_removal ();
if (!elem)
programming_error ("Score_engraver: empty elt\n");
else
-
elems_.push (elem);
}
}
-/*
- 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.
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 ;
trans->start ();
trans->run_iterator_on_me (iter);
- delete iter;
+ iter->quit();
+ scm_remember_upto_here_1 (protected_iter);
trans->finish ();
if (errorlevel_)
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);
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);
*/
-/*
-
- 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.
Sequential_iterator::Sequential_iterator ()
{
here_mom_ = Moment (0);
+ list_ = SCM_EOL;
+ cursor_ = SCM_EOL;
grace_fixups_ = 0;
iter_ =0;
}
return SCM_EOL;
}
+void
+Sequential_iterator::do_quit ()
+{
+ if (iter_)
+ iter_->quit();
+}
+
+
Sequential_iterator::Sequential_iterator (Sequential_iterator const &src)
: Music_iterator (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_);
}
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);
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;
}
else
me->next_element (false);
}
- delete me;
-
+
+ scm_gc_unprotect_object (me->self_scm());
return s;
}
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)
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 ();
}
: 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);
}
- add support for different stretch/shrink constants?
*/
-
+#include <stdio.h>
#include <math.h>
#include <libc-extension.hh> // isinf
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
{
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
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 */
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);
+ }
}
}
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;
}
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);
: 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);
}
& Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
+#include "config.h"
+
#include <stdio.h>
#include <assert.h>
#if HAVE_SSTREAM
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
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?
{
delete istream_;
istream_ = 0;
- delete contents_str0_;
+ delete[] contents_str0_;
}
Slice
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
}
SCM
-Spanner::do_derived_mark ()
+Spanner::do_derived_mark () const
{
/*
We'd be fucked if this is called before spanned_drul_[] is inited. */
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;
&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.
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());
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);
}
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);
}
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
{
--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
{
{
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);
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):
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
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);
{
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;
}
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());
}
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);
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);
{
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"));
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;
}
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());
/* 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 */ "");
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));
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_;
}
void
-Text_spanner_engraver::process_acknowledged_grobs ()
+Text_spanner_engraver::process_music ()
{
if (req_drul_[STOP])
{
}
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;
}
}
{
if (current_req_)
{
- req_drul_[START]->origin ()->warning
- (_ ("already have a text spanner"));
+ req_drul_[START]->origin ()->warning(_ ("already have a text spanner"));
}
else
{
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;
}
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_));
+ }
}
}
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;
}
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 ();
}
}
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 */ "",
Music_wrapper_iterator::process (m);
}
-
+
IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);
: Music_wrapper (l)
{
set_mus_property ("iterator-ctor",
- Time_scaled_music_iterator::constructor_cxx_function);
+ Time_scaled_music_iterator::constructor_proc);
}
}
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);
}
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}.
end_consists_name_list_ = SCM_EOL;
property_ops_ = SCM_EOL;
type_name_ = SCM_EOL;
+
+ smobify_self();
+
}
+
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_;
}
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
Translator::Translator ()
{
+ self_scm_ = SCM_EOL;
init ();
output_def_ = 0;
smobify_self ();
Translator::Translator (Translator const &s)
{
+ self_scm_ = SCM_EOL;
init ();
output_def_ = s.output_def_;
type_string_ = s.type_string_;
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);
{
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;
/*
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);
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;
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();
--- /dev/null
+/*
+ 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;
+}
+
--- /dev/null
+\version "1.5.68"
+% a3-init.ly
+
+hsize = 296.9 \mm
+vsize = 420.0 \mm
\consists "Arpeggio_engraver"
\consists "Multi_measure_rest_engraver"
\consists "Text_spanner_engraver"
+ \consists "Grob_pq_engraver"
\consists "Ligature_bracket_engraver"
\consists "Breathing_sign_engraver"
\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"
automaticMelismata = ##t
defaultBarType = #"|"
+ barNumberVisibility = #default-bar-number-visibility
explicitClefVisibility = #all-visible
explicitKeySignatureVisibility = #all-visible
% 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)
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
}
\type "Score_performer"
\name Score
+ \alias Timing
instrument = #"bright acoustic"
\accepts Staff
\accepts GrandStaff
\accepts ChoirStaff
\accepts RhythmicStaff
\accepts ChordNames
-
+ \alias "Timing"
\consists "Timing_translator"
\consists "Swallow_performer"
-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 = {
include $(depth)/make/substitute.make
-# HUH???
-$(outdir)/%.hh: $(doc-dir)/%.in
- rm -f $@
- echo '_(' > $@
- cat $< | $(sed-quotes) | $(sed-newline) | $(sed-quote-line) >> $@
- echo ');' >> $@
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)
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
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
+# 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
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
# 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
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
%description documentation
-The documentation of LilyPond, both in HTML and PostScript.
+The documentation and example files of LilyPond.
%prep
%setup
# 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
# 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
$(outdir)/%.latex: %.doc
- rm -f $@
+ -chmod a+w $@
$(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES)\
$(LILYPOND_BOOK_FLAGS) --verbose --dependencies --outdir=$(outdir) $<
chmod -w $@
# 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 $@
+
+
$(outdir)/$(NAME).tely: $(LY_FILES)
$(PYTHON) ../../buildscripts/lys-to-tely.py --name=$(outdir)/$(NAME) --title="$(TITLE)" $(LY_FILES)
+
-$(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 $@
# 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
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:
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
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");
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);
% 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;
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
%
% 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
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);
%%%%%%%%
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;
# 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"
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
# %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"
#: 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"
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"
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"
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."
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"
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
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"
#: 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"
#: 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"
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
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
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
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
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"
#: 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 "
#: 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
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
#: 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"
#: 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"
#: 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."
#: 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
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"
#: 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"
#: 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
#: 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
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..."
#: 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
#: 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
#: 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 ... "
msgstr "Skaber: "
#: performance.cc:103
-#, fuzzy
msgid "at "
-msgstr ", ved "
+msgstr "ved "
#: performance.cc:114
#, c-format
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"
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
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"
#: 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
#: 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"
#: 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
#: 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
#: 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."
#: 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"
#~ 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>"
#~ 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\""
#~ 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"
#~ 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"
#
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"
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: "
#: 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"
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"
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"
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
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."
#: ly2dvi.py:726
msgid "The error log is as follows:"
-msgstr ""
+msgstr "Le journal d'erreurs est comme suit:"
#: ly2dvi.py:849
#, c-format
#: 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
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"
#: 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
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
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
#: 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"
#: 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"
#: 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
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"
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
#: main.cc:110
msgid "use output format EXT"
-msgstr ""
+msgstr "utiliser le format de sortie EXT"
#: main.cc:112
msgid "FIELD"
"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
"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
"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"
#: 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"
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..."
#: 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
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
#: 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
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"
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
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"
#~ 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:"
#~ 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 »..."
#~ 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"
#~ " \\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"
#~ 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"
#~ 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"
(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
(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
)
)
)
(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
;;;; 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
;;(write standalone (current-error-port))
-; (set-debug-cell-accesses! #t)
;;; General settings
-
-
;; debugging evaluator is slower.
;(debug-enable 'debug)
;(read-enable 'positions)
+
(define point-and-click #f)
(define security-paranoia #f)
(define midi-debug #f)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(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))
(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)
)
-(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
+ ))
-(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?
(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")
(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?
; 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)
'(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")
(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))
(begin
; uncomment for some stats about lily memory
; (display (gc-stats))
- (string-append "\n\\EndLilyPondOutput"
+ (string-append "\n\\EndLilyPondOutput\n"
; Put GC stats here.
)))
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
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?
(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
(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.")
# 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
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,
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
<p>
<a href="%(fn)s.png">
<img border=0 src="%(fn)s.png" alt="[picture of music]">
-</a>
+</a><p>
@end html
''',
}
body = re.sub ('>', '>', body)
body = re.sub ('<', '<', 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'
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)
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)
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)
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
'''
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.'''
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'
+ _ ("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):
ly_paper_to_latexpaper = {
'a4' : 'a4paper',
'letter' : 'letterpaper',
+ 'a3' : 'a3paper'
}
#TODO: should set textheight (enlarge) depending on papersize.
os.chdir (original_dir)
cleanup_temp ()
-
+
+ sys.exit (lilypond_error_p)
else:
help ()
user_error (_ ("no files specified on command line"), 2)
%% 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}