]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.152
authorfred <fred>
Wed, 27 Mar 2002 01:03:36 +0000 (01:03 +0000)
committerfred <fred>
Wed, 27 Mar 2002 01:03:36 +0000 (01:03 +0000)
Documentation/index.texi
Documentation/user/refman.itely
NEWS
lily/clef-engraver.cc
lily/include/separating-group-spanner.hh
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
ly/engraver.ly
scm/clef.scm
scm/translator-property-description.scm

index fd9f0838df0bfe3a6614e3c0c8e55dfa30f354e2..ca143450ff358a46ccff1d02b670f524c998667f 100644 (file)
@@ -48,7 +48,7 @@ the mailing lists
 <a name="other-users">
 @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
index 45bf0efd7b860a3abb6a31c43013c9d6290133bc..9315ae245ce6c7f08adbbadcc2d6b10eb33900f6 100644 (file)
@@ -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 aec5cbde5094e5e6c72ad2c13ebb2dfa171c8f4c..481c8bf7c08849445c33961e86b9e6d7b2c9bcd3 100644 (file)
--- 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
index 013c5dac4b9a17e6da8230fa86cfb370f82b4bc7..fb12bd8d9d19ee8ca83fc4508eae527d5c29ecea 100644 (file)
@@ -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 ()
 {
index aacce5f99881ba44d164486f4c0f0d0236ced31e..1b8baf9ea931f1fa8b8faf03e08cb65e15ced9b0 100644 (file)
@@ -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 ));
 };
 
index dbef68ff5a95390d58829f5ee7165ede289577c7..bc5e030994bd1404c465ac22bd4b2ee433a40fc3 100644 (file)
 #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<Item*> (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<Item*> (unsmob_grob (elt));
 
-      Item *l = dynamic_cast<Item*> (unsmob_grob (elt));
-      Item *r = dynamic_cast<Item*> (unsmob_grob (next_elt));
-
-      if (!r || !l)
+      if (!r)
        continue;
-      
-      Item *lb
-       = dynamic_cast<Item*> (l->find_prebroken_piece (RIGHT));
 
       Item *rb
        = dynamic_cast<Item*> (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);
 }
index 39cfa193c2131a3c1e655cf1711c5f0d187a22de..73e0f2e16070f2f85ccbc11a3b081552e2c9f3d6 100644 (file)
@@ -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")));
 }
index bec4f635108ac4ed952e23bbd1c1f6c8b5bbf2d6..b8fa85214a13831a27951128df15a9471bae3b36 100644 (file)
@@ -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 = #"|"
index 53d0d6232cf8509d89fa08c3dfc84b9bf1726168..8c82d0f14672e63ab0385fefb03e1bf9420ac3ee 100644 (file)
@@ -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))
        )
 )
 
+; "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))
        )
 
 
     (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))
index 2dde1156dd4e161cacfd99eaefdf70ec646fe8ea..5900032c1b5ddef1f702180a7ba829b4e06febcf 100644 (file)
@@ -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}.
 
 .")