\version "2.12.0" rightTearWidth = #1 rightTearFixedLengths = #'(0 1 3 4 2) rightTearGeneric = #(define-music-function (parser location lengths) (list?) #{ #(define (x-ext n) (cons (* (list-ref $lengths n) (/ rightTearWidth 4)) rightTearWidth)) #(define y-ext '(1.5 . 2.5)) \once \override Staff.BarLine #'stencil = #ly:text-interface::print \once \override Staff.BarLine #'text = \markup \override #'(baseline-skip . 0) \with-color #white \column { \filled-box #(x-ext 0) #y-ext #0 \filled-box #(x-ext 1) #y-ext #0 \filled-box #(x-ext 2) #y-ext #0 \filled-box #(x-ext 3) #y-ext #0 \filled-box #(x-ext 4) #y-ext #0 } \once \override Staff.BarLine #'layer = #1 \once \override Staff.BarLine #'X-extent = #(cons 0 (- rightTearWidth 0.1)) \break #} ) rightTearFixed = #(define-music-function (parser location) () #{ \rightTearGeneric \rightTearFixedLengths #} ) rightTearCustom = #(define-music-function (parser location lengths) (list?) #{ \rightTearGeneric #$lengths #} ) rightTearRandom = #(define-music-function (parser location) () #{ \rightTearGeneric #(let loop ((unused '(0 1 2 3 4)) (lengths '())) (if (= (length lengths) 5) lengths (let* ((x (random (length unused))) (y (- (length unused) x)) (z (list-ref unused x))) (loop (append (list-tail unused (+ x 1)) (list-tail (reverse unused) y)) (append lengths `(,z)))))) #} ) rTF = #rightTearFixed rTC = #rightTearCustom rTR = #rightTearRandom \score { \relative { g'4 d' b d \rightTearFixed g,4 d' b d \rTR g,4 d' b d \rTR g,4 d' b d \rTR g,4 d' b d \rTR g,4 d' b d \rTR g,4 d' b d \rightTearCustom #'(0 1 2 3 4) g,4 d' b d \rightTearRandom %%using abbreviated forms: g,4 d' b d \rTF g,4 d' b d \rTC #'(0 1 2 3 4) g,4 d' b d \rTR } \layout { indent = #0 ragged-right = ##t } }