]> git.donarmstrong.com Git - lilypond.git/commitdiff
* input/regression/new-part-combine-solo.ly: more cases.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 3 Feb 2004 11:30:26 +0000 (11:30 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 3 Feb 2004 11:30:26 +0000 (11:30 +0000)
* lily/slur.cc (height): robustness fix.

* lily/new-part-combine-iterator.cc (process): add apart-spanner.

* input/mutopia/F.Schubert/morgenlied.ly (melody): revert
stemUp/stemDown.

* scm/music-functions.scm (determine-split-list): further analysis.

* input/regression/new-part-combine-solo.ly: new file

ChangeLog
input/mutopia/F.Schubert/morgenlied.ly
input/regression/new-part-combine-solo.ly
lily/new-part-combine-iterator.cc
lily/slur.cc
scm/music-functions.scm

index 17d9fec6487fad0a4f02da57b25627f41cd6ae8c..b113a02f0c62c7d27cd0ee3e2294c9beeff9cf84 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2004-02-03  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * input/regression/new-part-combine-solo.ly: more cases.
+
+       * lily/slur.cc (height): robustness fix.
+
+       * lily/new-part-combine-iterator.cc (process): add apart-spanner. 
+
+       * input/mutopia/F.Schubert/morgenlied.ly (melody): revert
+       stemUp/stemDown.
+
        * scm/music-functions.scm (determine-split-list): further analysis.
 
        * lily/script-engraver.cc (try_music): discard duplicate
index 0a246875e6b7f8031202047a518d00f34b83581f..85d4e05323997f2ead7d3f270476e087e09c6efb 100644 (file)
@@ -54,7 +54,7 @@ melody = \notes   \relative c'' \repeat volta 2 \context Voice = singer {
   e4 c8
     <<
        \new Voice { \stemUp f8. g16 }
-       { \stemDown f8.[ g16] } >> a8 |
+       { \stemDown f8.[ g16] } >> \stemBoth a8 |
   fis4  g8 c16[ b a g] f[ e] |
   d4 f8 a16[ g fis g] f[ d] |
   g4. r8 gis gis |
index 50cb4eb820aa1dae24ba7104ec1251afe7ab041e..8b96e7df681003de2e221bc78e5f68accff168f7 100644 (file)
@@ -8,11 +8,14 @@
 A Solo indication is only printed once; (shared) rests do not require
 reprinting a solo indication.
 
+Solo 1/2 can not be used when a spanner is active, so there is no solo
+ over any of the tied notes.
+
 "
     }
 
-vone = \notes \relative a' { g4 r8 g8 g8 r8 g8 r8 }
-vtwo = \notes \relative g' { e4.   e8 r2  } 
+vone = \notes \relative a' { g4 r8 g8 g8 r8 g8 r8 g2 ~ g2 ~ g4 }
+vtwo = \notes \relative g' { e4.   e8 r2          e4 r4 r2  e4 
 
 \score {
     << \property Score.skipBars = ##t 
index d41eab19c61d48126126756f3b897a005d1276d3..9c096a628a125e47711dff0f91781f694a1ca851 100644 (file)
@@ -346,7 +346,8 @@ New_pc_iterator::process (Moment m)
       if (tag == ly_symbol2scm ("chords"))
        chords_together ();
       else if (tag == ly_symbol2scm ("apart")
-              || tag == ly_symbol2scm ("apart-silence"))
+              || tag == ly_symbol2scm ("apart-silence")
+              || tag == ly_symbol2scm ("apart-spanner"))
        apart (tag == ly_symbol2scm ("apart-silence"));
       else if (tag == ly_symbol2scm ("unisono"))
        unisono (false);
index 1ccb8a861f51850dd8c827d707a3e304d7e45a82..8d69ddb2c275775abdd8e28288fd84d711a12473 100644 (file)
@@ -529,7 +529,10 @@ Slur::height (SCM smob, SCM ax)
   assert (a == Y_AXIS);
 
   SCM mol = me->get_uncached_molecule ();
-  return ly_interval2scm (unsmob_molecule (mol)->extent (a));
+  Interval ext;
+  if (Molecule * m = unsmob_molecule (mol))
+    ext = m->extent (a);
+  return ly_interval2scm (ext);
 }
 
 /*
index 2d3b1197e4b8adcfdb9f2a3958ca3cb9c757e854..c40d4b0783733c32eaf6ae400baf7c9e4ae2001d 100644 (file)
@@ -829,7 +829,7 @@ Rest can contain a list of beat groupings
 ;;
 (define-public (determine-split-list evl1 evl2)
   "EVL1 and EVL2 should be ascending"
-  (define pc-debug #f)
+  (define pc-debug #t)
   (define ev1 (list->vector evl1))
   (define ev2 (list->vector evl2))
   (define (when v i)
@@ -842,14 +842,10 @@ Rest can contain a list of beat groupings
     (define (f? x)
       (equal? (ly:get-mus-property  x 'name) 'NoteEvent))
     (filter f? (map car (what v i))))
+  (define moments (uniq-list
+                  (merge (map car evl1) (map car evl2) ly:moment<?)))
+  (define result '())
   
-  (define result
-    (list->vector
-     (map (lambda (x)
-           (cons x '()))
-         (uniq-list
-         (merge (map car evl1) (map car evl2) ly:moment<?)))))
-
   (define (analyse-time-step i1 i2 ri
                             active1
                             active2)
@@ -925,7 +921,7 @@ Rest can contain a list of beat groupings
      ((= i2 (vector-length ev2)) (put 'apart))
      (else
       (let*
-         (
+         ((now (when result ri))
 ;         (x (display (list "\nelse" (= i1 (vector-length ev1)) i2  (vector-length ev2) (= i2 (vector-length ev2)))))
           (m1 (when ev1 i1))
           (m2 (when ev2 i2))
@@ -943,8 +939,8 @@ Rest can contain a list of beat groupings
                       (vector-length ev1) (vector-length ev2) (vector-length result)  "\n")))
     
        
-       (if (not (or (equal? m1 (when result ri))
-                    (equal? m2 (when result ri))))
+       (if (not (or (equal? m1 now)
+                    (equal? m2 now)))
            (begin
              (display
               (list "<? M1,M2 != result :"
@@ -961,6 +957,7 @@ Rest can contain a list of beat groupings
          (if (> ri 0) (put 'apart (1- ri)))
          (analyse-time-step i1 (1+ i2) (1+ ri) active1 new-active2))
         (else
+
          (if (and (equal? active1 active2) (equal? new-active2 new-active1))
              (let*
                  ((notes1 (get-note-evs ev1 i1))
@@ -1007,8 +1004,10 @@ Rest can contain a list of beat groupings
                  
                  ))))
              
-             ;; active states different: 
-             (put 'apart))
+             ;; active states different:
+             ;; must mark differently so
+             ;; it doesn't transform into solo 
+             (put 'apart-spanner))
          (analyse-time-step (1+ i1) (1+ i2) (1+ ri) new-active1 new-active2)))
         ))))
 
@@ -1087,8 +1086,12 @@ Rest can contain a list of beat groupings
          (else
           (analyse-solo12 (1+ i1) (1+ i2) (1+ ri)))
          )))))
-
+   (set! result (list->vector
+                (map (lambda (x)
+                       (cons x '())) moments)))
+   
    (analyse-time-step 0 0  0 '() '())
+   (if pc-debug (display result))
    (analyse-solo12 0 0 0)
    (if pc-debug (display result))