+generateTiePattern
+= #(define-music-function (is-long chords) (boolean? ly:music?)
+
+ "
+
+translate x y z to x~x y~y z~z
+
+"
+
+ (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))))
+
+ (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 (append-map
+ chord->tied-chord (ly:music-property chords 'elements))))
+
+baseChords =
+\applyMusic #(lambda (mus)
+ (ly:music-property mus 'element))
+\relative {
+ <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
+}