From: fred Date: Wed, 27 Mar 2002 01:03:36 +0000 (+0000) Subject: lilypond-1.3.152 X-Git-Tag: release/1.5.59~696 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=0dd71bbaf0f1d8d0a71c2291600d8a8d612eeaba;p=lilypond.git lilypond-1.3.152 --- diff --git a/Documentation/index.texi b/Documentation/index.texi index fd9f0838df..ca143450ff 100644 --- a/Documentation/index.texi +++ b/Documentation/index.texi @@ -48,7 +48,7 @@ the mailing lists @end html -@unnumberedsubsec Information for other users +@unnumberedsubsec Information for users @itemize @bullet @@ -56,13 +56,11 @@ the mailing lists @c download sites? -@c NEWS - @c archives? @item @uref{../user/out-www/lilypond-internals/lilypond-internals.html,lilypond-internals} -Documentation of internals, generated from the sources. - +Documentation of internals, generated from the sources. If you want to +fine-tune output, you need the information in this document. @item @uref{../user/out-www/lilypond/lilypond.html,lilypond} The user manual, (in @uref{../user/out-www/lilypond.ps.gz,PostScript}) @item @uref{../user/out-www/glossary.html,glossary} A glossary of musical @@ -108,22 +106,23 @@ textual domain @itemize @bullet @item @uref{../topdocs/out-www/AUTHORS.html, Authors} documents who did what on LilyPond. - -@item @uref{../misc/out-www/CHANGES-0.0.html, Change logs from 0.0 till 0.1 } -@item @uref{../misc/out-www/CHANGES-0.1.html, Change logs from 0.1 till 1.0 } -@item @uref{../misc/out-www/CHANGES-1.0.html, Change logs from 1.0 till 1.1 } -@item @uref{../misc/out-www/CHANGES-1.1.html, Change logs from 1.1 till -1.2 } -@item @uref{../misc/out-www/CHANGES-1.2.html, Change logs from 1.2 till 1.3 } -@item @uref{../misc/out-www/NEWS-1.2.html, summary of changes from 1.1 till 1.2 } -@item @uref{../misc/out-www/ANNOUNCE-0.1.html, Announcement of 0.1 (includes summary of -changes)} -@item @uref{../misc/out-www/ANNOUNCE-1.0.html, Announcement of 1.0 (includes summary of -changes)} -@item @uref{../misc/out-www/ANNOUNCE-1.2.html, Announcement of 1.2 (includes summary of changes)} -@item @uref{../misc/out-www/AIMS.html, Why LilyPond?} -@item @uref{../misc/out-www/interview.html, Answers} to the Brave GNU world standard questions. -@item @uref{../windows/out-www/lily-wins.html, Lily Wins} +@item @uref{../out-www/NEWS.txt,NEWS} summary of changes for 1.4 +@item @uref{../misc/out-www/CHANGES-0.0.html, CHANGES-0.0} Change logs from 0.0 till 0.1 +@item @uref{../misc/out-www/CHANGES-0.1.html, CHANGES-0.1} Change logs from 0.1 till 1.0 +@item @uref{../misc/out-www/CHANGES-1.0.html, CHANGES-1.0} Change logs from 1.0 till 1.1 +@item @uref{../misc/out-www/CHANGES-1.1.html, CHANGES-1.1} Change logs from 1.1 till +1.2 +@item @uref{../misc/out-www/CHANGES-1.2.html, CHANGES-1.2} Change logs from 1.2 till 1.3 +@item @uref{../misc/out-www/NEWS-1.2.html, NEWS-1.2} summary of changes from 1.1 till 1.2 +@item @uref{../misc/out-www/ANNOUNCE-0.1.html, ANNOUNCE-0.1} Announcement of 0.1 (includes summary of +changes) +@item @uref{../misc/out-www/ANNOUNCE-1.0.html, ANNOUNCE-1.0} Announcement of 1.0 (includes summary of +changes) +@item @uref{../misc/out-www/ANNOUNCE-1.2.html, ANNOUNCE-1.2} Announcement of 1.2 (includes summary of changes) +@item @uref{../misc/out-www/AIMS.html, AIMS} Why LilyPond? +@item @uref{../misc/out-www/interview.html, interview} Answers to the Brave GNU world standard questions. +@item @uref{../windows/out-www/lily-wins.html, lily-wins} musings on the +Windows installer @end itemize @unnumberedsubsec Literature diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 45bf0efd7b..9315ae245c 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -1315,15 +1315,10 @@ syntactically valid, but makes no sense and may cause runtime errors. Ending a staff or score with grace notes may also generate a run-time error, since there will be no main note to attach the grace notes to. -Combining grace notes and clef changes will prints note heads on -erroneous vertical positions. - The present implementation of grace notes is not robust and generally kludgey. We expect it to change after LilyPond 1.4. Syntax changes might also be implemented. - - @menu * Glissando :: * Dynamics:: @@ -1549,6 +1544,12 @@ Folded repeats offer little more over simultaneous music. However, it is to be expected that more functionality -- especially for the MIDI backend -- will be implemented at some point in the future. +Volta repeats are printed over all staffs in a score. You must turn them +off explicitly, for example by doing +@example + \property Staff.VoltaBracket = \turnOff +@end example + @node Manual repeat commands @subsection Manual repeat commands diff --git a/NEWS b/NEWS index aec5cbde50..481c8bf7c0 100644 --- a/NEWS +++ b/NEWS @@ -1,20 +1,12 @@ New features in 1.4 -* Finale (.etf), PMX, Musedata and Mup import tools. - -* Point and click functionality using emacs and Xdvi. - -* Comprehensive documentation, including tutorial. - -* Self-documenting: generated internal documentation. -* Includes an extensive glossary of musical terms. +DESIGN -* Improved design and implementation: Complete rewrite of the -internals: LilyPond is smaller, cleaner, more flexible, etc. - - More pervasive GUILE integration resulting in: +* More pervasive GUILE integration resulting in improved design and +implementation. LilyPond is smaller, cleaner, more flexible, etc. - Improved speed with comparable memory footprint @@ -23,38 +15,64 @@ internals: LilyPond is smaller, cleaner, more flexible, etc. - Improved robustness: Lily almost never crashes. + - Access to internal music representation + * New font selection scheme similar to Latex-NFSS. -* Medieval notation features: clefs, custodes +* Flexible formatting mechanism for musical texts. + +* Chordnames are now configurable in every respect + +* Part combining for orchestral scores and hymns: two voices are + combined into a staff automatically, including Solo/a2 + indications as appropriate. -* Piano pedal support, Arpeggios, Glissandi -* MIDI: dynamics, tempo changes +ERGONOMICS -* Typography: More elegant slurs, aligned dynamics, text crescendos, +* Point and click functionality using emacs and Xdvi. + +* Rewritten Emacs mode + +* Cleaned up syntax details + +* Comprehensive documentation, including a rewritten tutorial. + +* All properties have doc strings, and internal documentation is +generated automatically. + +* Windows point-and-click installer + + +NOTATION FEATURES + +* Piano pedals, Arpeggios, Glissandi, many more note head +shapes, Medieval clefs, custodes. * Better lyrics placement: Automatical phrasing, melisma alignment, and stanza numbering. -* Part combining for orchestral scores and hymns: two voices are - combined into a staff automatically, including Solo/a2 - indications as appropriate. +* Typography: More elegant slurs, aligned dynamics, text crescendos, -* Chordnames are now configurable in every respect +* Easy-play note heads -* Easy-play notation -* Finished ouverture Coriolan as full orchestral score example. +MIDI + +* dynamics, tempo changes in the MIDI output + + +MISC + +* Finale (.etf), PMX, Musedata and Mup import tools. * Mutopia ports collection: easy accessible music archive. * ASCIIScript: ASCII-art output -* Translations into Japanese, French and Russian - -* Many bugfixes. +* Improved standalone postscript layout. +* Translations into Japanese, French and Russian -Removed features +* Many many many bugfixes. -* margin shape diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 013c5dac4b..fb12bd8d9d 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -43,7 +43,6 @@ private: SCM prev_cpos_; SCM prev_octavation_; void create_clef (); - void set_central_c (SCM, SCM, SCM); void set_glyph (); void inspect_clef_properties (); }; @@ -60,37 +59,6 @@ Clef_engraver::Clef_engraver () prev_cpos_ = prev_glyph_ = SCM_BOOL_F; } -void -Clef_engraver::set_central_c (SCM glyph,SCM clefpos, SCM octavation) -{ - prev_cpos_ = clefpos; - prev_glyph_ = glyph; - prev_octavation_ = octavation; - - SCM p = get_property ("clefPitches"); - int c0_position = 0; - if (gh_list_p (p)) - { - SCM found = scm_assoc (glyph, p); - if (found == SCM_BOOL_F) - { - c0_position =0; - } - else - { - c0_position = gh_scm2int (gh_cdr (found)); - - if (gh_number_p (octavation)) - c0_position -= gh_scm2int (octavation); - - if (gh_number_p (clefpos)) - c0_position += gh_scm2int (clefpos); - } - - } - daddy_trans_l_->set_property ("centralCPosition", gh_int2scm (c0_position)); -} - void Clef_engraver::set_glyph () { @@ -195,11 +163,14 @@ Clef_engraver::inspect_clef_properties () ) { set_glyph (); - set_central_c (glyph, clefpos, octavation); - create_clef (); clef_p_->set_grob_property ("non-default", SCM_BOOL_T); + + prev_cpos_ = clefpos; + prev_glyph_ = glyph; + prev_octavation_ = octavation; + } if (to_boolean (force_clef)) @@ -209,6 +180,7 @@ Clef_engraver::inspect_clef_properties () } } + void Clef_engraver::stop_translation_timestep () { diff --git a/lily/include/separating-group-spanner.hh b/lily/include/separating-group-spanner.hh index aacce5f998..1b8baf9ea9 100644 --- a/lily/include/separating-group-spanner.hh +++ b/lily/include/separating-group-spanner.hh @@ -16,7 +16,9 @@ class Separating_group_spanner { public: static void add_spacing_unit (Grob*me, Item*); + static void find_rods (Item*, SCM); static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM )); }; diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index dbef68ff5a..bc5e030994 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -14,26 +14,63 @@ #include "dimensions.hh" #include "group-interface.hh" -static void -do_rod (Item *l, Item *r) +void +Separating_group_spanner::find_rods (Item * r, SCM next) { - Rod rod; - - Interval li (Separation_item::my_width (l)); Interval ri (Separation_item::my_width (r)); + if (ri.empty_b ()) + return; + + /* + This is an inner loop, however, in most cases, the interesting L + will just be the first entry of NEXT, making it linear in most of + the cases. */ + for(; gh_pair_p (next); next = gh_cdr (next)) + { + Item *l = dynamic_cast (unsmob_grob (gh_car( next))); + Item *lb = l->find_prebroken_piece (RIGHT); + + if (lb) + { + Interval li (Separation_item::my_width (lb)); - rod.item_l_drul_[LEFT] =l; - rod.item_l_drul_[RIGHT]=r; + if (!li.empty_b ()) + { + Rod rod; - if (li.empty_b () || ri.empty_b ()) - rod.distance_f_ = 0; - else - rod.distance_f_ = li[RIGHT] - ri[LEFT]; + rod.item_l_drul_[LEFT] = lb; + rod.item_l_drul_[RIGHT] = r; - rod.columnize (); - rod.add_to_cols (); + rod.distance_f_ = li[RIGHT] - ri[LEFT]; + + rod.columnize (); + rod.add_to_cols (); + } + } + + Interval li (Separation_item::my_width (l)); + if (!li.empty_b ()) + { + Rod rod; + + rod.item_l_drul_[LEFT] =l; + rod.item_l_drul_[RIGHT]=r; + + rod.distance_f_ = li[RIGHT] - ri[LEFT]; + + rod.columnize (); + rod.add_to_cols (); + + break; + } + else + /* + this grob doesn't cause a constraint. We look further until we + find one that does. */ + ; + } } - + MAKE_SCHEME_CALLBACK (Separating_group_spanner,set_spacing_rods,1); SCM Separating_group_spanner::set_spacing_rods (SCM smob) @@ -45,37 +82,18 @@ Separating_group_spanner::set_spacing_rods (SCM smob) /* Order of elements is reversed! */ - SCM elt = gh_cadr (s); - SCM next_elt = gh_car (s); + SCM elt = gh_car (s); + Item *r = dynamic_cast (unsmob_grob (elt)); - Item *l = dynamic_cast (unsmob_grob (elt)); - Item *r = dynamic_cast (unsmob_grob (next_elt)); - - if (!r || !l) + if (!r) continue; - - Item *lb - = dynamic_cast (l->find_prebroken_piece (RIGHT)); Item *rb = dynamic_cast (r->find_prebroken_piece (LEFT)); - do_rod (l, r); - if (lb) - { - do_rod (lb, r); - } - + find_rods (r, gh_cdr (s)); if (rb) - { - do_rod (l, rb); - } - - if (lb && rb) - { - do_rod (lb, rb); - - } + find_rods (rb, gh_cdr (s)); } /* @@ -106,5 +124,10 @@ Separating_group_spanner::add_spacing_unit (Grob* me ,Item*i) void Separating_group_spanner::set_interface (Grob*) { +} +bool +Separating_group_spanner::has_interface (Grob*) +{//todo + assert (false); } diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index 39cfa193c2..73e0f2e160 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -41,7 +41,7 @@ void Separating_line_group_engraver::initialize () { sep_span_p_ = new Spanner (get_property ("SeparatingGroupSpanner")); - Separating_group_spanner::set_interface (sep_span_p_); + announce_grob (sep_span_p_, 0); sep_span_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); } diff --git a/ly/engraver.ly b/ly/engraver.ly index bec4f63510..b8fa85214a 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -408,26 +408,11 @@ ScoreContext = \translator { voltaVisibility = ##t % name, glyph id, clef position % where is c0 in this clef? - clefPitches = #'(("clefs-G" . -4) - ("clefs-C" . 0) - ("clefs-F" . 4) - ("clefs-vaticana_do" . 0) - ("clefs-vaticana_fa" . 4) - ("clefs-medicaea_do" . 0) - ("clefs-medicaea_fa" . 4) - ("clefs-hufnagel_do" . 0) - ("clefs-hufnagel_fa" . 4) - ("clefs-hufnagel_do_fa" . 0) - ("clefs-mensural1_c" . 0) - ("clefs-mensural2_c" . 0) - ("clefs-mensural3_c" . 0) - ("clefs-mensural1_f" . 4) - ("clefs-mensural2_f" . 4) - ("clefs-mensural_g" . -4)) clefGlyph = #"clefs-G" clefPosition = #-2 - + centralCPosition = #-6 + automaticPhrasing = ##t alignmentReference = #-1 % \down defaultBarType = #"|" diff --git a/scm/clef.scm b/scm/clef.scm index 53d0d6232c..8c82d0f146 100644 --- a/scm/clef.scm +++ b/scm/clef.scm @@ -1,7 +1,8 @@ -;; + ;; (name . (glyph clef-position octavation)) -;; -- the name clefOctavation is misleading the value 7 is 1 octave not 7 Octaves. ;; +;; -- the name clefOctavation is misleading. The value 7 is 1 octave, not 7 Octaves. + (define supported-clefs '( ("treble" . ("clefs-G" -2 0)) ("violin" . ("clefs-G" -2 0)) @@ -56,8 +57,29 @@ ) ) +; "an alist mapping GLYPHNAME to the position of the central C for that symbol") +(define c0-pitch-alist + '(("clefs-G" . -4) + ("clefs-C" . 0) + ("clefs-F" . 4) + ("clefs-vaticana_do" . 0) + ("clefs-vaticana_fa" . 4) + ("clefs-medicaea_do" . 0) + ("clefs-medicaea_fa" . 4) + ("clefs-hufnagel_do" . 0) + ("clefs-hufnagel_fa" . 4) + ("clefs-hufnagel_do_fa" . 0) + ("clefs-mensural1_c" . 0) + ("clefs-mensural2_c" . 0) + ("clefs-mensural3_c" . 0) + ("clefs-mensural1_f" . 4) + ("clefs-mensural2_f" . 4) + ("clefs-mensural_g" . -4)) + ) + (define (clef-name-to-properties cl) (let ((e '()) + (c0 0) (oct 0) (l (string-length cl)) ) @@ -73,17 +95,17 @@ (set! e (assoc cl supported-clefs)) + (if (pair? e) `(((symbol . clefGlyph) (iterator-ctor . ,Property_iterator::constructor) (value . ,(cadr e)) ) -; ((symbol . forceClef) -; (iterator-ctor . ,Property_iterator::constructor) -; (value . #t) -; ) - + ((symbol . centralCPosition) + (iterator-ctor . ,Property_iterator::constructor) + (value . ,(+ oct (caddr e) (cdr (assoc (cadr e) c0-pitch-alist)))) + ) ((symbol . clefPosition) (iterator-ctor . ,Property_iterator::constructor) (value . ,(caddr e)) diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index 2dde1156dd..5900032c1b 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -124,7 +124,6 @@ key signatures after the bar lines: (translator-property-description 'clefGlyph string? "Name of the symbol within the music font") (translator-property-description 'clefOctavation integer? "Add this much extra octavation. Values of 7 and -7 are common.") -(translator-property-description 'clefPitches list? "an alist mapping GLYPHNAME to the position of the central C for that symbol") (translator-property-description 'clefPosition number? "Where should the center of the symbol go?") (translator-property-description 'combineParts boolean? "try to combine parts?") (translator-property-description 'connectArpeggios boolean? " If @@ -368,7 +367,7 @@ If not set explicitly (by property or @code{\bar}), this is set according to values of @code{defaultBarType}, @code{barAlways}, @code{barNonAuto} and @code{measurePosition}. -Legal values are described in @ref{(lilypond-internals)bar-line-interface}. +Valid values are described in @ref{(lilypond-internals)bar-line-interface}. .")