]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.17 release/1.3.17
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 23 Dec 1999 23:58:41 +0000 (00:58 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 23 Dec 1999 23:58:41 +0000 (00:58 +0100)
===========

* \property stemCentered (boolean): centers stem on note head. See
input/test/stem-centered.ly

* input/trip.ly, small test of lots of features.

* \property Staff.collisionMergeDotted: merge equal noteheads
with different dot count. See input/test/collision-merge-dotted.fly

* Dotted rest bugfix

* Don't crash if a slur does not span any notes.

* Volta repeats fixed.

* cleanup of Note_heads_engraver

* removed dots_i_ member of Dots

1.3.16.j

34 files changed:
CHANGES
Documentation/topdocs/AUTHORS.texi
Documentation/topdocs/index.tely
TODO
VERSION
input/praeludium-fuga-E.ly
input/test/collision-merge-dotted.fly [new file with mode: 0644]
input/test/stem-centered.ly [new file with mode: 0644]
input/trip.ly [new file with mode: 0644]
lily/bar-number-engraver.cc
lily/collision.cc
lily/dots.cc
lily/include/dimension-cache.hh
lily/include/dots.hh
lily/include/note-heads-engraver.hh
lily/include/rhythmic-head.hh
lily/include/stem.hh
lily/include/timing-translator.hh
lily/multi-measure-rest-engraver.cc
lily/music.cc
lily/note-heads-engraver.cc
lily/repeat-engraver.cc
lily/rest-engraver.cc
lily/rhythmic-head.cc
lily/score-element.cc
lily/slur.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/timing-translator.cc
lily/volta-spanner.cc
make/out/lilypond.lsm
make/out/lilypond.spec
scm/generic-property.scm
scripts/convert-mudela.py

diff --git a/CHANGES b/CHANGES
index 5b2222460c1684c46153983254ebc2af8de3b2f1..59d59c2a777fff7c027368c873bbd21f32b58deb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,22 +1,44 @@
+1.3.16.hwn1
+===========
+
+* \property stemCentered (boolean): centers stem on note head. See
+input/test/stem-centered.ly
+
+* input/trip.ly, small test of lots of features.
+
+* \property Staff.collisionMergeDotted: merge equal noteheads
+with different dot count. See input/test/collision-merge-dotted.fly
+
+* Dotted rest bugfix 
+
+* Don't crash if a slur does not span any notes.
+
+* Volta repeats fixed.
+
+* cleanup of Note_heads_engraver
+
+* removed dots_i_ member of Dots
+
 1.3.16.jcn1
+===========
        * Fixed cross staff slurs.  It seems that cross-staff sign
          was swapped.
 
 1.3.15.hwn1
 ===========
 
-       * Fixed bug in stem code.  Stem in chords works again.  Small
+* Fixed bug in stem code.  Stem in chords works again.  Small
 stem cleanups.
 
-       * Use element properties for Staff_symbol.
+* Use element properties for Staff_symbol.
 
-       * \property sparseTies (boolean).  Only make one tie in the
+* \property sparseTies (boolean).  Only make one tie in the
 middle for tied chords.
 
-       * Junked Directional_spanner, Column_info.
+* Junked Directional_spanner, Column_info.
 Directional_element now is element interface `Directional_element_interface'
 
-       * cleanup: use to_boolean () iso. gh_boolean_p && gh_bool2scm
+* cleanup: use to_boolean () iso. gh_boolean_p && gh_bool2scm
 
 pl 15.jcn4
        - removed old notename2scm conversion
index 1472a368633a6f108903942f314e46ce06b30654..a9969ccd58ef9d79ac91bf638bf056b84fe69bc1 100644 (file)
@@ -54,9 +54,10 @@ list is alphabetically ordered.
 @item @email{oliva@@dcc.unicamp.br, Alexandre Oliva}, 
     @uref{http://sunsite.unicamp.br/~oliva/}
     testing
-@item @email{pinard@@iro.umontreal.ca, Franc@,ois Pinard}, 
+@item @email{pinard@@iro.umontreal.ca, Francois Pinard},
     parts of Documentation/Vocab*, started internationalization stuff
-@item @email{portnoy@@ai.mit.edu,Stephen Peters} pdfTeX support
+@c urg: @c,{} in @email{} barfs.
+@item @email{portnoy@@ai.mit.edu,Stephen Peters}, pdfTeX support
 @item @email{glenprideaux@@iname.com, Glen Prideaux},
     minor bug fix to script used to generate doc++ documentation
 @item @email{Roy.Rankin@@alcatel.com.au, Roy R. Rankin},
index 4f137441ae553d5c3205154a11a9311f9ec758c8..b283504ec4682dee1aa83e973f9940b23b28779d 100644 (file)
@@ -79,7 +79,6 @@ has the development pages.
 binary RPMs:  @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/}  
 
 @item Debian binary @uref{ftp://ftp.debian.org/pub/debian/dists/unstable/main/binary-i386/tex} 
-@item Windows NT:  @uref{http://home.austin.rr.com/jbr/jeff/lilypond/} 
 @item i386 RPM: @uref{http://linux.umbc.edu/software/lilypond/rpms/} 
 @item Windows NT: @uref{http://home.austin.rr.com/jbr/jeff/lilypond/}
 @end itemize
diff --git a/TODO b/TODO
index 7863d6cfc25049bc983f79e78fb736ff8a1980ca..fb57dd8de097369102c9176688b1900a7c033b6f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -12,24 +12,11 @@ Grep -i for TODO, FIXME and ugh/ugr/urg.
 .* TODO
 . * use hash tabs iso. alist_ for elt property?
 . * alignment within @itemize
-. * make a trip test
-.  * base on praeludium
-.  * cross staff beam
-.  * remain very short
-.  * broken slurs, ties
-.  * chords on stem
-.  * grace notes.
-.  * dynamics.
-
 . * junk dstream output.
 . * agressive type-checking for SCM stuff.
+. * script columns
 . * Must stop before this music ends:
 verse=\lyrics {
-. * use  "staff-space" and "half-space" iso interline,
-    staff_line_leading () etc.
-. * why does Voice.beamQuantisation = #'none not work?
-    overriding in ly/params.ly works fine
-
 . * TODO^2:
 .  * make  a TODO.texi, like http://www.gnu.org/software/guile/ideas.html
 .  * make this file understandable for 3rd parties.
@@ -38,29 +25,6 @@ verse=\lyrics {
 . * acc at tied note after linebreak.
 . * fix font-naming and selecting
 . * sparse ties.
-. * 
-- in the melody contex I have:
-
-                d8 d, d' <d f> d, <d' f> |
-
-- in the bass context I have:
-
-
-                r8 d4. d4 |
-
-The problem is with 3rd note from melody / 2nd note from the bass.
-lilypond prints them as 2 separate notes, while the original score uses
-the same note circle, and draws both up and down stems. Like for the 5th
-melody / 3rd bass note. Is there any way to solve this ? It looks like
-lilypond doesn't like that the bass note is "4." If I make it "4", then
-lilypond will draw it like I want.
-
-Also, another problem is the midi output. Those bass notes are doubled.
-Is there any way to mute one of "them" ? 
-
-Probably this is not a problem with lilypond, but with my lack of
-knowledge of music theory and/or lilypond. Anyhow, any help is highly
-appreciated, like always :-)
 . * chord tonic: placement of accidental  C#, Cb (from scm and C++)
 . * note head on stem err msg in dutch.
 . * why need to run -C mf twice?
@@ -76,7 +40,6 @@ John
 . * junk -M ? 
 . * mudela-book doco
 . * fix or replace feta-accordion.mf
-. * script engraver
 . * bracket pdf hack
 . * Mondrup:
 - if I change the property minVerticalAlign in a multi staff score with
@@ -85,19 +48,9 @@ _only_ affect staves.
 
 - I would like to be able to influence the sloping of xtuplet brackets
 
-- for one of my test scores containing a modern edition of an early
-17'th century composition I have a leading measure containing the
-orginal clefs and note values of the original composition. I use the
-a"harmonic" and "diamond" note head styles for that measure and would
-like to have the stems of these notes _centered_ on the notehead as in
-the mensural music notation.
-
 - after the leading measure in the above mentioned score I want a double
 bar line fully drawn across the staves and after that keep to the
 ChoirStaff bar line types in the rest of the scores
-
-. * make all Feta (including dynamics) available to the user in
-    textual scripts. Examples: "D.S. al \coda", "\mf espress.".
 . * Write script that uses --find-old-relative to do auto relativization. 
 
 
@@ -118,7 +71,7 @@ ChoirStaff bar line types in the rest of the scores
 . * accidentals closer to note head
 
 
-.* Beams
+.* BEAMS
 . * [c8. c16 c16 c16] in 6/8 timesig.
 . * Rewrite Stem, Beam (hairy)
 .  * beams over barlines
diff --git a/VERSION b/VERSION
index 392c87bcaa1cffd06092fa54cd3fd4f7fbf8125a..5097f24666b174f3a22a0a3e8f200f83e345a1f3 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=16
-MY_PATCH_LEVEL=jcn1
+PATCH_LEVEL=17
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 638a23de1f2034a74549469791cb3cb4733fabde..58d5cf7c5a568d8818c3628063e261a8fe966ab5 100644 (file)
@@ -13,7 +13,6 @@
        2nd fuga transposed subject -- 4 bar excerpt. 
         We try to imitate the Griepenkerl/Keller edition which
        gives the best approximation to Bach's original layout
-
 %}
 %{
  Tested Features:
@@ -70,18 +69,18 @@ praeludium_left = \notes \relative c {
 
   % 13
   \context Staff <
-    \context VoiceTwo { r4 }
-    \context VoiceOne { \stemup s4 dis' cis cis ~ |
+    \context Voice = two { r4 }
+    \context Voice = one { \stemup s4 dis' cis cis ~ |
       [cis8 a d cis] [bis gis] cis4 |
       dis2 cis4 r8 cis }
-    \context VoiceOne { \stemup bis2 }
-    \context VoiceThree { \stemup \shifton r4 gis ~ [gis8 gis] ~ \stemdown \shiftoff gis4 |
+    \context Voice = one { \stemup bis2 }
+    \context Voice = three { \stemup \shifton r4 gis ~ [gis8 gis] ~ \stemdown \shiftoff gis4 |
       a4. fis8 gis4. a8 ~ |
       a4 gis4 gis r8 gis }
 %    { \stemup \shifton s4 fis4 e}
 % a quick hack to avoid some collisons
-    \context VoiceFour { \stemdown \shifton s4 fis4 e}
-    \context VoiceTwo { \stemdown s4 dis4 cis4 }
+    \context Voice = four { \stemdown \shifton s4 fis4 e}
+    \context Voice = two { \stemdown s4 dis4 cis4 }
   > |
   %16
 }
@@ -113,7 +112,6 @@ fugaII_right = \notes   \relative c''   {
     \context Voice = VB {  \stemdown fis2 }
   >
 
-  % Wadieuw
   \context Staff \notes\relative c''<
        \context Voice=one {
          \property Voice.horizontalNoteShift=0
@@ -139,13 +137,13 @@ fugaII_right = \notes   \relative c''   {
 
     %16
     \context Staff <
-      \context VoiceOne {  dis2 dis4 |
+      \context Voice = one {  dis2 dis4 |
       cis2 cis4 |
       b4. [cis8 dis e] }
-    \context VoiceThree {  \stemup \shifton [b8 fis] b2 ~ |
+    \context Voice = three {  \stemup \shifton [b8 fis] b2 ~ |
       [b8 a!16 gis] a2 ~ |
       a4 gis2 }
-    \context VoiceTwo {  \stemdown fis2. ~ |
+    \context Voice = two {  \stemdown fis2. ~ |
       fis ~ |
       fis4 e2 }
   > |
@@ -158,9 +156,9 @@ fugaII_left = \notes {
 
   %15
   \context Staff < 
-    \context VoiceTwo { \stemdown b2 \stemup ais4 |
+    \context Voice = two { \stemdown b2 \stemup ais4 |
       b2 b4 }
-    \context VoiceTwo { \stemdown s2 e4 |
+    \context Voice = two { \stemdown s2 e4 |
       fis2 fis4 }
   >
   \stemdown cis2 e4 |
@@ -201,36 +199,7 @@ breakmusic = \notes {
   >
 
   \paper {
-    \translator {
-    \VoiceContext
-    \name "VoiceOne";
-    verticalDirection = #1
-    }
-    \translator {
-    \VoiceContext
-    \name "VoiceTwo";
-    verticalDirection = #1
-    }
-    \translator {
-    \VoiceContext
-    \name "VoiceThree";
-    verticalDirection = #1
-    horizontalNoteShift = #1
-    }
-    \translator {
-    \VoiceContext
-    \name "VoiceFour";
-    verticalDirection = #-1
-    horizontalNoteShift = #1
-    }
-   \translator { 
-     \StaffContext 
-     
-     \accepts VoiceFour;
-     \accepts VoiceThree;
-     \accepts VoiceTwo;
-     \accepts VoiceOne;
-   }
+
    \translator { \OrchestralScoreContext }
   }
 
diff --git a/input/test/collision-merge-dotted.fly b/input/test/collision-merge-dotted.fly
new file mode 100644 (file)
index 0000000..bbf4f4d
--- /dev/null
@@ -0,0 +1,11 @@
+
+\relative c'' \context Staff <
+\context Voice = one {
+       \property Staff.collisionMergeDotted = ##t
+       \stemup
+       [c8 f g a]
+}
+\context Voice = two {
+       \stemdown c,4. f8
+
+}>
diff --git a/input/test/stem-centered.ly b/input/test/stem-centered.ly
new file mode 100644 (file)
index 0000000..a78d48d
--- /dev/null
@@ -0,0 +1,9 @@
+
+\score {
+\notes {
+\relative c'' {
+\property Voice. stemCentered = ##t
+\property Voice . noteHeadStyle = "harmonic"
+c4 c4 c8 c8 }
+}
+}
diff --git a/input/trip.ly b/input/trip.ly
new file mode 100644 (file)
index 0000000..dbc7cd9
--- /dev/null
@@ -0,0 +1,213 @@
+\header {
+  filename =    "praeludium-fuga-E.ly";
+  title =       "praeludium and fuga in E-major";
+  opus =        "BWV 566";
+  composer =    "Johann Sebastian Bach (1685-1750)";
+  enteredby =   "JCN";
+  copyright =   "public domain";
+}
+%{
+  description
+
+  Praeludium 3 bar excerpt,
+       2nd fuga transposed subject -- 4 bar excerpt. 
+        We try to imitate the Griepenkerl/Keller edition which
+       gives the best approximation to Bach's original layout
+%}
+%{
+ Tested Features:
+ purpose of this file is testing: 
+   * real-life collisions
+   * multi-voice input --- splitting?
+   * organ staff...
+%}
+
+\version "1.3.4";
+
+
+
+praeludium_commands = \notes {
+}
+
+praeludiumRight =  \notes {
+   \key e;
+  \clef violin;
+
+  % 13 -- how to type -- where to split -- this more neatly?
+  \context Staff <
+    \context Voice = I \relative c'' { \stemup r4 dis4 e4. e8 ~ |
+      \shifton e4 [d8 fis8] \shiftoff gis4 ~ [gis8 fis16 e ] |
+      fis4 ~ [fis8 e16 dis] e4 r8 e8 }
+    \context Voice = III \relative c'' { \stemup \shifton r4 bis cis \shiftoff cis |
+      a' ~ [a16 gis a b] \shifton dis,4 cis ~ |
+      [cis8 dis16 ais] bis4 cis r8 b }
+    \context Voice = IV \relative c'' {
+
+      %\stemup
+      %{
+      this is a diversion from the Griepenkerl/Keller
+       edition; a hack to avoid collisions
+      %}
+      \stemdown
+      \shifton s4 gis }
+      
+    \context Voice =  II \relative c' { \stemdown
+%      \shifton       % idem
+
+      r4 fis \shiftoff gis gis |
+      a4. cis8 gis2 |
+      fis4 gis gis r8 e8 }
+  > |
+  % 16
+}
+
+praeludiumLeft = \notes \relative c {
+   \key e;
+  \clef bass;
+
+  % 13
+  \context Staff <
+    \context Voice = two { r4 }
+    \context Voice = one { \stemup s4 dis' cis cis ~ |
+      [cis8 ( a \translator Staff = treble  \stemdown \shifton d ) cis]
+      \translator Staff = bass 
+      \shiftoff
+      [bis gis] cis4 |
+      dis2 cis4 r8 cis }
+    \context Voice = one { \stemup bis2 }
+    \context Voice = three {
+    \property Voice.dynamicDirection  = \down
+    \stemup \shifton r4 gis ~ [gis8 \< gis] ~ \stemdown \shiftoff gis4 |
+      a4. fis8 \! gis4. a8 ~ |
+      a4 gis4 gis r8 gis }
+%    { \stemup \shifton s4 fis4 e}
+% a quick hack to avoid some collisons
+    \context Voice = four { \stemdown \shifton s4 fis4 e}
+    \context Voice = two { \stemdown s4 dis4 cis4 }
+  > |
+  %16
+}
+
+
+
+fugaII_commands = \notes{
+  \time3/4;
+}
+
+fugaIIRight = \notes   \relative c''   {
+  \key e;              % E-major
+  \clef violin;
+
+  %15
+  \context Staff <
+    \context Voice = VA { \stemup [b8 fis8] b4 }
+    \context Voice = VB {  \stemdown fis2 }
+  >
+
+  \context Staff \notes\relative c''<
+       \context Voice=one {
+         \property Voice.horizontalNoteShift=0
+         \property Voice.verticalDirection=1 
+         e4 
+       }
+       \context Voice=two {
+         \property Voice.verticalDirection=1 
+         \property Voice.horizontalNoteShift=1
+         cis
+       }
+       \context Voice=three {
+         \property Voice.horizontalNoteShift=2
+         \property Voice.verticalDirection=1 
+         ais
+       }
+       \context Voice=four {
+         \property Voice.verticalDirection=-1 
+         \property Voice.horizontalNoteShift=-1
+         fis
+       }
+  >
+
+    %16
+    \context Staff <
+      \context Voice = one {  dis2 dis4 |
+      cis2 cis4 |
+      b4. [cis8 dis e] }
+    \context Voice = three {  \stemup \shifton [b8 fis] b2 ~ |
+      [b8 a!16 gis] a2 ~ |
+      a4 gis2 }
+    \context Voice = two {  \stemdown fis2. ~ |
+      fis ~ |
+      fis4 e2 }
+  > |
+  %19
+}
+
+fugaIILeft = \notes {
+  \key e;
+  \clef bass;
+
+  %15
+  \context Staff < 
+    \context Voice = one { \stemdown
+    \grace { [c16 ( cis dis] }
+    \relative b, < )b2 dis fis a b cis dis> \stemup ais4 |
+      b2 b4 }
+    \context Voice = two { \stemdown s2 e4 |
+      fis2 fis4 }
+  >
+  \stemdown cis2 e4 |
+  b4. b8 b4 |
+  %19
+}
+
+fugaIIPedal = \notes \relative c {
+  \key e;
+  \clef bass;
+
+  %15
+  dis4.-\ltoe e8-\rtoe cis4 |
+  b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] |
+  fis4.-\rtoe [e8-\rheel dis8-\rtoe cis8-\ltoe] |
+  dis4-\rtoe e4-\rheel e,4-\ltoe |
+  %19
+}
+
+
+
+% these should be two separate scores...
+\score{
+  \context Score  \notes <
+    \context PianoStaff <
+      \context Staff = treble {
+       \property Score.midiInstrument = "church organ"
+        \praeludiumRight r1 \fugaIIRight }
+      \context Staff = bass { 
+        \praeludiumLeft r1 \fugaIILeft }
+    > 
+    \context Staff = pedal \relative c  <
+      {
+        \time 4/4;
+       \key E; 
+  \clef bass;
+
+  %13
+  r4 fis,4-\ltoe e4.-\lheel e'8-\rheel | 
+  fis4.-\rtoe fis8-\rtoe fis4-\rtoe [e8-\ltoe a-\rtoe] | 
+  dis,4-\ltoe gis-\rtoe [cis,8-\ltoe( b!-\lheel ais-\rtoe gis-\ltoe ~ ] |
+  %16
+ \notes { gis8  r4. )c2 }
+ \time 3/4;
+
+  \fugaIIPedal }
+      
+    >
+  >
+
+  \paper {
+
+   \translator { \OrchestralScoreContext }
+  }
+
+  \midi {
+    \tempo 4 =96; }
+}
index e28939ca6788ec3ea893de16f3a3f05117ee042a..d2119562fe6f94cd1da9b6d1f3eebcede8bbeffd 100644 (file)
@@ -28,11 +28,13 @@ Bar_number_engraver::do_process_requests ()
   Timing_translator *time = dynamic_cast<Timing_translator*>(tr);
 
   // todo include (&&!time->cadenza_b_ )
-  if (!time->measure_position () && now_mom () > Moment (0))
+  SCM bn = get_property("currentBarNumber",0);
+
+  if (gh_number_p (bn) &&
+      !time->measure_position () && now_mom () > Moment (0))
     {
       create_items (0);
-       
-      text_p_->text_str_ = to_str (time->bars_i ());
+      text_p_->text_str_ = to_str (gh_scm2int (bn));
     }
 }
 
index a6bf46e56cc85da7374356e3564d00697da529ff..edf04de23d06f91e3fbf1d54ff3333177dd67523 100644 (file)
@@ -153,8 +153,11 @@ Collision::automatic_shift ()
       
       bool merge  =
        downpos == uppos
-       && nu_l->balltype_i () == nd_l->balltype_i ()
-       && nu_l->dots_i () == nd_l->dots_i ();
+       && nu_l->balltype_i () == nd_l->balltype_i ();
+
+
+      if (!to_boolean (get_elt_property ("merge-differently-dotted")))
+       merge = merge && nu_l->dot_count () == nd_l->dot_count ();
 
       /*
        notes are close, but can not be merged.  Shift
index ad62ecceda10a471d346987165a71261d73deac7..93eda7287b7dc7b387d738707cbf1db622e80217 100644 (file)
 
 Dots::Dots ()
 {
-  dots_i_ =0;
+  set_elt_property ("dot-count", gh_int2scm (0));
 }
 
 void
 Dots::do_post_processing ()
 {
-  if (!dots_i_)
+  SCM d= get_elt_property ("dot-count");
+  if (!gh_number_p (d) || !gh_scm2int (d))
     {
       set_elt_property ("transparent", SCM_BOOL_T);
       set_empty (X_AXIS);
@@ -50,7 +51,9 @@ Dots::do_brew_molecule_p () const
 
   Real dw = d.dim_[X_AXIS].length ();
   d.translate_axis (-dw, X_AXIS);
-  for (int i=dots_i_; i--; )
+
+
+  for (int i = gh_scm2int (get_elt_property ("dot-count")); i--; )
     {
       d.translate_axis (2*dw,X_AXIS);
       out->add_molecule (d);
index 7db6f94a5621388228a43e788c63aa2cb63b3f57..990888c564c1a731b25b1240413c39cf8c97126d 100644 (file)
@@ -48,9 +48,6 @@ public:
   Axis axis () const;
   Real get_offset () const;
   void set_callback (Dim_cache_callback);
-  /** The #offset_# is defined with regard to this graphical_element/
-    dimension_cache.  */
-  void set_offset_callback (Offset_cache_callback);
   Dimension_cache * parent_l_;
 
   Score_element *element_l () const { return elt_l_; }
index 4cb5843b9df8b891703d97207ac68d4b1706495e..33c821a7b40e798ae3228101ae883a1a6174c326 100644 (file)
@@ -24,8 +24,6 @@ protected:
   virtual Molecule * do_brew_molecule_p () const;
   virtual void do_post_processing ();
 public:
-  // junkme.
-  int dots_i_;
   
   Dots ();
 };
index 9dcd26f469b3c48555f894ea3f38a2aa08902b23..9431618b19fa131c9d28cc647fd45e5803d74f74 100644 (file)
@@ -17,8 +17,7 @@ class Note_heads_engraver : public Engraver {
   Link_array<Note_head> note_p_arr_;
   Link_array<Dots> dot_p_arr_;
   Link_array<Note_req> note_req_l_arr_;
-  PQueue<Moment> notes_end_pq_;
-
+  Moment note_end_mom_;
 public:
   VIRTUAL_COPY_CONS(Translator);
   Note_heads_engraver();
@@ -27,7 +26,6 @@ protected:
   virtual bool do_try_music (Music *req_l) ;
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
 };
 
 
index 9013c0eb42ca6c663821d4813793db747cda195e..d16d03391c266060d4657fec063bd90f6707abb7 100644 (file)
@@ -19,9 +19,9 @@ public:
   int balltype_i () const;
 
   void add_dots (Dots *);
-  Stem * stem_l ()const;
-  Dots * dots_l ()const;
-  int dots_i ()const;
+  Stem * stem_l () const;
+  Dots * dots_l () const;
+  int dot_count () const;
 protected:
   virtual void do_post_processing ();
 };
index e1b330e200d87ff7faeecff3db8146b3739404a4..41a8a78fe6e7268f2e118c7b0994ecac6bc13ae3 100644 (file)
@@ -62,7 +62,6 @@ public:
   /// ensure that this Stem also encompasses the Notehead #n#
   void add_head (Rhythmic_head*n);
 
-  Real hpos_f () const;
   Stem_info calc_stem_info () const;
 
   Real chord_start_f () const;
@@ -86,8 +85,7 @@ protected:
 
 
   Real stem_end_position () const;
-  // todo: cleanup, naming
-  Real note_delta_f () const;
+  static Real off_callback (Dimension_cache const*);
 protected:
   Molecule flag () const;
 
index 5c11973c2e8a8446725d8d5d4be4d26c7834f87d..84ca4d0528944f3c2ca40a9fe97a8a2feda83c98 100644 (file)
@@ -22,6 +22,7 @@ public:
   Time_signature_change_req * time_signature_req_l () const;
   Timing_translator ();
   Link_array<Timing_req> timing_req_l_arr_;
+
 protected: 
   virtual void do_creation_processing ();
   virtual bool do_try_music (Music *req_l);
@@ -30,8 +31,6 @@ protected:
   virtual void do_post_move_processing();
 
 public:
-  /// JUNKME
-  int bars_i () const;
 
   Moment measure_position () const;
   Moment measure_length () const;  
index 9f8f34fd2a033b19594c51c9cad31364209b4709..e60294316123fb474ccd099e05b4fabb33f5f242 100644 (file)
@@ -86,7 +86,8 @@ Multi_measure_rest_engraver::do_process_requests ()
        mmrest_p_->set_elt_property ("alt-symbol", 
                                     ly_str02scm ("scripts-repeatsign"));
       announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
-      start_measure_i_ = time->bars_i ();
+      start_measure_i_
+       = gh_int2scm (time->get_property ("currentBarNumber", 0));
     }
 }
 
@@ -125,7 +126,8 @@ Multi_measure_rest_engraver::do_post_move_processing ()
   if (mmrest_p_ && !time->measure_position ())
     {
       lastrest_p_ = mmrest_p_;
-      lastrest_p_->measures_i_ = time->bars_i () - start_measure_i_;
+      lastrest_p_->measures_i_
+       = gh_int2scm (time->get_property ("currentBarNumber", 0)) - start_measure_i_;
       mmrest_p_ = 0;
     }
 
index 8d75a3642022499decbf833e247ab4c6d9643aae..10462173df834fe380b5fb81afffe9c42630d501 100644 (file)
@@ -39,10 +39,7 @@ Music::print() const
   if (! flower_dstream)
     return ;
   DEBUG_OUT << classname(this) << "{";
-  /*
-  if  (translator_type_str_.length_i ())
-    DEBUG_OUT << translator_type_str_ << " = " << translator_id_str_;
-  */
+  
   do_print();
   DEBUG_OUT << "}\n";
 #endif
index ce6c46dcf5f834542ec0caffd81f41e00e200d9f..0eadf768e4a375797f4f23c37b5f17352a305225 100644 (file)
@@ -22,7 +22,7 @@ Note_heads_engraver::do_try_music (Music *m)
   if (Note_req * n =dynamic_cast <Note_req *> (m))
     {
       note_req_l_arr_.push (n);
-      notes_end_pq_.insert (now_mom () + m->length_mom ());
+      note_end_mom_  = note_end_mom_ >? now_mom () + m->length_mom ();
       
       return true;
     }
@@ -40,7 +40,7 @@ Note_heads_engraver::do_try_music (Music *m)
     }
   else if (Busy_playing_req * p = dynamic_cast<Busy_playing_req*> (m))
     {
-      return notes_end_pq_.size ();
+      return now_mom () < note_end_mom_;
     }
   else if (Pitch_interrogate_req *p = dynamic_cast<Pitch_interrogate_req*> (m))
     {
@@ -80,7 +80,7 @@ Note_heads_engraver::do_process_requests()
          sd.set_interface ();
          
          note_p->add_dots (d);
-         d->dots_i_ = note_req_l->duration_.dots_i_;
+         d->set_elt_property ("dot-count", gh_int2scm (note_req_l->duration_.dots_i_));
          announce_element (Score_element_info (d,0));
          dot_p_arr_.push (d);
        }
@@ -118,13 +118,6 @@ Note_heads_engraver::do_pre_move_processing()
   note_req_l_arr_.clear ();
 }
 
-void
-Note_heads_engraver::do_post_move_processing()
-{
-  Moment n (now_mom ());
-  while (notes_end_pq_.size () && notes_end_pq_.front () <=n)
-    notes_end_pq_.get ();
-}
 
 
 
index b389d92ee5ae258fe7c0ba4943af54039cb5d262..cdea34d4b270029e74273e509b0813225f772674 100644 (file)
@@ -56,7 +56,7 @@ Repeat_engraver::queue_events ()
   Moment walk_mom = now_mom () + repeated_music_l_->repeat_body_p_->length_mom ();
 
   SCM novolta = get_property ("noVoltaBraces",0);
-  bool create_volta = gh_boolean_p (novolta) && !gh_scm2bool (novolta);
+  bool create_volta = !to_boolean (novolta);
 
   Cons_list<Bar_create_event> becel;
   becel.append (new Bar_create_event (now_mom (), "|:"));
@@ -104,15 +104,15 @@ Repeat_engraver::queue_events ()
              volta_number ++;
               SCM l (get_property ("voltaSpannerDuration", 0));
               if (SMOB_IS_TYPE_B (Moment, l))
-              {
-                 Moment vSD_mom = *SMOB_TO_TYPE (Moment,l);
-                if ( vSD_mom < i->car_->length_mom() ) // terminate volta early ?
-                {
-                        vSD_mom += walk_mom;
-                   c->last_b_ = true;
-                   becel.append (new Bar_create_event (vSD_mom, "stop"));
-                }
-              }
+               {
+                 Moment vSD_mom = *SMOB_TO_TYPE (Moment,l);
+                 if ( vSD_mom < i->car_->length_mom() ) // terminate volta early ?
+                   {
+                     vSD_mom += walk_mom;
+                     c->last_b_ = true;
+                     becel.append (new Bar_create_event (vSD_mom, "stop"));
+                   }
+               }
            }
          walk_mom += i->car_->length_mom();
 
index 368f6fdae2f066e6aa023df5417a365b66afee51..90e63d79c685bec9059813d852db0c9e937433f0 100644 (file)
@@ -61,7 +61,8 @@ Rest_engraver::do_process_requests ()
          si.set_interface ();
          
          rest_p_->add_dots (dot_p_);
-         dot_p_->dots_i_ = rest_req_l_->duration_.dots_i_;       
+         dot_p_->set_elt_property ("dot-count",
+                                   gh_int2scm (rest_req_l_->duration_.dots_i_));
          announce_element (Score_element_info (dot_p_,0));
        }
 
index 9e354bde2f0e4108e337be94bc8766019620f418..72807c77cc5f950d11d59896b137408e4fd249af 100644 (file)
@@ -42,9 +42,10 @@ Rhythmic_head::stem_l () const
 }
 
 int
-Rhythmic_head::dots_i () const
+Rhythmic_head::dot_count () const
 {
-  return dots_l () ? dots_l ()->dots_i_ : 0;
+  return dots_l ()
+    ? gh_scm2int (dots_l ()->get_elt_property ("dot-count")) : 0;
 }
   
 void
index 870c2803986e303801bf0bcddd236671a7816e5d..f2c462f91a3cf7f2b48666d9a7062ce2f3828f26 100644 (file)
@@ -172,8 +172,7 @@ Score_element::print() const
 {
 #ifndef NPRINT
   DEBUG_OUT << classname(this) << "{\n";
-  
-  
+    
   if (flower_dstream && !flower_dstream->silent_b ("Score_element"))
     ly_display_scm (element_property_alist_);
 
index 9b965fa52274952df4a80d7dff29b90c7fcf0a65..e5be36ae521a5f999ef4c310ec781320e26a1fdf 100644 (file)
@@ -134,6 +134,13 @@ Slur::do_post_processing ()
   Link_array<Note_column> encompass_arr =
     Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
 
+  if (!encompass_arr.size ())
+    {
+      set_elt_property ("transparent", SCM_BOOL_T);
+      set_empty (X_AXIS);
+      set_empty (Y_AXIS);
+      return;
+    }
 
   if (!directional_element (this).get ())
     directional_element (this).set (get_default_dir ());
index db15d09e4be192f6e2182147d9bc281ab612ee6d..1ca152c2754b3d2687ea8e712e0ba17f5f733ccd 100644 (file)
@@ -113,9 +113,9 @@ Stem_tremolo::do_brew_molecule_p () const
            uhg.  Should use relative coords and placement
          */
          Real whole_note_correction = (st && st->invisible_b( ))
-           ? -st->get_direction () * st->note_delta_f ()/2
+           ? 0.0 //  -st->get_direction () * st->note_delta_f ()/2
            : 0.0;
-
+        
          dy += st->stem_end_position ();
          beams->translate (Offset(st->hpos_f () - hpos_f ()+
                                   whole_note_correction, dy));
index 9b315ca6d7c1aae5dbbfeb44f8c46d7f5e03eb07..7c721c203d3503ece4b6cf4338e53d83e13296e2 100644 (file)
@@ -215,6 +215,8 @@ Stem::Stem ()
 {
   set_elt_property ("heads", SCM_EOL);
   set_elt_property ("rests", SCM_EOL);
+
+  dim_cache_[X_AXIS]->off_callbacks_.push ( &Stem::off_callback);
 }
 
 bool
@@ -274,6 +276,8 @@ Stem::get_default_stem_end_position () const
   scm_to_array (s, &a);
 
   // stem uses half-spaces
+
+  // fixme: use gh_list_ref () iso. array[]
   Real shorten_f = a[((flag_i () - 2) >? 0) <? (a.size () - 1)] * 2;
 
   /* URGURGURG
@@ -406,7 +410,7 @@ Molecule
 Stem::flag () const
 {
   String style;
-  SCM st = get_elt_property ("style");
+  SCM st = get_elt_property ("flag-style");
   if ( st != SCM_UNDEFINED)
     {
       style = ly_scm2string (st);
@@ -431,7 +435,6 @@ Stem::dim_callback (Dimension_cache const* c)
   else
     {
       r = s->flag ().dim_.x ();
-      r += s->note_delta_f ();
     }
   return r;
 }
@@ -475,36 +478,29 @@ Stem::do_brew_molecule_p () const
       mol_p->add_molecule (fl);
     }
 
-  if (first_head ())
-    {
-      mol_p->translate_axis (note_delta_f (), X_AXIS);
-    }
   return mol_p;
 }
 
 Real
-Stem::note_delta_f () const
+Stem::off_callback (Dimension_cache const * c)
 {
+  Stem * st = dynamic_cast<Stem*> (c->element_l ());
+
   Real r=0;
-  if (first_head ())
+  if (Note_head * f = st->first_head ())
     {
-      Interval head_wid(0,  first_head()->extent (X_AXIS).length ());
-         Real rule_thick = paper_l ()->get_var ("stemthickness");
+      Interval head_wid(0, f->extent (X_AXIS).length ());
 
-      Interval stem_wid(-rule_thick/2, rule_thick/2);
-      if (get_direction () == CENTER)
-       r = head_wid.center ();
-      else
-       r = head_wid[get_direction ()] - stem_wid[get_direction ()];
+      if (to_boolean (st->get_elt_property ("stem-centered")))
+       return head_wid.center ();
+      
+      Real rule_thick = st->paper_l ()->get_var ("stemthickness");
+      Direction d = st->get_direction ();
+      r = head_wid[d] - d * rule_thick ;
     }
   return r;
 }
 
-Real
-Stem::hpos_f () const
-{
-  return note_delta_f () + Item::hpos_f ();
-}
 
 
 Beam*
index d54a1903f9b919f6a377e4147a15df09df1f73d8..8caa3eef77f48c180f9069ff1d368e16d7884db4 100644 (file)
@@ -239,8 +239,3 @@ Timing_translator::do_post_move_processing()
   tr->set_property ("currentBarNumber", gh_int2scm (b));
 }
 
-int 
-Timing_translator::bars_i () const
-{
-  return gh_scm2int (get_property ("currentBarNumber", 0));
-}
index 2aed1b957084f055be189de04d3108f8192e9727..5acbc039a043a88f32f1d1d19b06d120d35d52e6 100644 (file)
@@ -39,9 +39,8 @@ Volta_spanner::do_brew_molecule_p () const
   if (!bar_arr.size ())
     return mol_p;
 
-  Link_array<Bar> note_column_arr
-    = Group_interface__extract_elements (this, (Bar*)0, "note-columns");
-
+  Link_array<Score_element> note_column_arr
+    = Group_interface__extract_elements (this, (Score_element*)0, "note-columns");
   
   bool no_vertical_start = false;
   bool no_vertical_end = last_b_;
index d1d72eb40c0149be0ef4d7a0599edb65ba485c7c..5af3b0ba8f3a9ccfc942c455693b8e5f2a36a75c 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.16
-Entered-date: 22DEC99
+Version: 1.3.17
+Entered-date: 24DEC99
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.3.16.tar.gz 
+       1000k lilypond-1.3.17.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.16.tar.gz 
+       1000k lilypond-1.3.17.tar.gz 
 Copying-policy: GPL
 End
index b8a952b8fb975e1cd0d9e1588553688430cba5a6..7a3311f3c15e9ae2ae2c3fea8f8a709149565851 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.16
+Version: 1.3.17
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.16.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.17.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # get Packager from (undocumented?) ~/.rpmmacros!
index decc1ad6df249fe2e34f8707065e4ff4b9d3081b..9e47ccbf307178aa7a0302b33360eb2884e30e3b 100644 (file)
@@ -19,7 +19,8 @@
         (list 'stemVerticalDirection dir? 'direction)
         (list 'verticalDirection dir? 'direction)       
         (list 'stemLength number? 'length)
-        (list 'stemStyle string? 'style)
+        (list 'flagStyle string? 'flag-style)
+        (list 'stemCentered boolean? 'stem-centered)
         (list 'noStemExtend boolean? 'no-stem-extend)
         (list 'stemShorten number? 'shorten)
         ))
         (list 'forceHorizontalShift number? 'force-hshift)
         )))
 
+(define generic-collision-properties
+  (cons "Collision"
+       (list
+        (list 'collisionMergeDotted boolean? 'merge-differently-dotted)
+        )
+       )
+  )
+  
 (define generic-slur-properties
   (cons "Slur"
        (list
    generic-bar-properties
    generic-timesig-properties
    generic-clef-properties
+   generic-collision-properties
    generic-All-properties      
    )
   )
    generic-bar-properties
    ))
 
-
 (define generic-thread-properties
   (list generic-All-properties
        generic-dot-properties
-
        )
 
   )
index 57d3324966615da28754a78298a1ca0a336ab23f..7328a1b9b713023ab315b6da9e11e0c84271502b 100644 (file)
@@ -396,6 +396,15 @@ if 1:
 
        conversions.append ((1,3,5), conv, 'beamAuto moment properties')
 
+if 1:
+       def conv (str):
+               str = re.sub ('stemStyle',
+                             'flagStyle',
+                             str)
+               return str
+
+       conversions.append ((1,3,17), conv, 'stemStyle -> flagStyle')
+
 ############################