]> git.donarmstrong.com Git - lilypond.git/blobdiff - input/regression/tie-chord.ly
Update .ly files.
[lilypond.git] / input / regression / tie-chord.ly
index 9ad29d33289bb2b665e52ab8fe5bbbbfb066c02c..2688680580f5d32c7bcb9baddc8f84cc05dbf9cf 100644 (file)
+\header {
+
+
+  texidoc = "In chords, ties keep closer to the note head vertically,
+but never collide with heads or stems. Seconds are formatted up/down;
+the rest of the ties are positioned according to their vertical
+position.
+
+The code does not handle all cases. Sometimes ties will printed on top
+of or very close to each other. This happens in the last chords of
+each system.  "
+  
 
-\version "2.1.22"
-\header{
-texidoc="
-When tying chords, the outer slurs point outwards, the inner slurs
-point away from the center of the staff. The behavior can be overridden 
-by setting explicitly the @code{direction} of a @code{TieColumn}.
-"
 }
 
+\version "2.12.0"
+
+\paper {
+  indent = #0.0
+  ragged-right = ##t
+}
+
+
+
+generateTiePattern
+= #(define-music-function (parser location is-long chords) (boolean? ly:music?)
+
+    "
 
-t = \notes \relative c' {   <c e g> ~ <c e g> }
+translate x y z to x~x y~y z~z
 
-       \score { 
-\notes \context Voice {
-   \t
-   \transpose c g \t
+" 
+    
+  (define (chord->tied-chord chord)
+    (let*
+       ((ch1 (ly:music-deep-copy chord))
+        (ch2 (ly:music-deep-copy chord))
+        (dur1 (ly:make-duration
+               (if is-long
+                   1 2)))
+        (dur2 (ly:make-duration
+               (if is-long
+                   3 2))))
 
-   \override TieColumn  #'direction = #-1
-   \t
+      (for-each (lambda (e)
+                 (ly:music-set-property! e 'duration dur1))
+               (ly:music-property ch1 'elements))
 
-  }
+      (for-each (lambda (e)
+                 (ly:music-set-property! e 'duration dur2))
+               (ly:music-property ch2 'elements))
+      
+      (set! (ly:music-property ch1 'elements)
+           (cons
+            (make-music 'TieEvent)
+            (ly:music-property ch1 'elements)))
+
+      (list ch1 ch2)))
+
+  (make-music 'SequentialMusic 'elements (apply append
+                                               (map chord->tied-chord (ly:music-property  chords 'elements)))))
+
+baseChords =
+\applyMusic #(lambda (mus)
+             (ly:music-property mus 'element))
+\relative c'' {
+  <c e>  
+  <b c e>
+  <a c e>
+  <a b e>
+  <a b e f>
+  <a c d f>
+  <a c e f>
+  <f a e' f>
+  <c e f a> 
+  <c e g a>
+  <f b e a>
 }
 
+testShort =
+{
+  \key c \major
+  \generateTiePattern ##f \baseChords
+}  
+
+testLong =
+{
+  \key c \major
+  \generateTiePattern ##t \baseChords
+}  
+
+\new Voice
+{
+  \time 2/4
+
+  \testShort \break
+  \transpose c d \testShort \break
+  \time 5/8
+  \testLong \break
+  \transpose c d \testLong \break
+}
+
+