Scoop implementation
kastdeur opened this issue · 2 comments
kastdeur commented
Instead of a horizontal grouping, an arrow (going up and down) should be over the notes.
Line 346 in 5944a0e
kastdeur commented
Using a PhrasingSlur and modifying the shape might be an idea to implement this.
https://lilypond.org/doc/v2.23/Documentation/notation/modifying-shapes
kastdeur commented
Using TextSpanEvent
:
\version "2.22.2"
\include "../lib/lilydrum/lilydrum.ly"
#(define (text-spanner-start-stop mus spanid)
(let ((elts (ly:music-property mus 'elements)))
(make-music 'SequentialMusic 'elements
(append
(list (make-music 'TextSpanEvent 'span-direction -1 'spanner-id spanid ))
(reverse (cdr (reverse elts)))
(list (make-music 'TextSpanEvent 'span-direction 1 'spanner-id spanid))
(list (last elts))))))
scoop = #(define-music-function (music) (ly:music?)
"Add a TextSpanner over music representing a scoop.
This is notated with a bent arrow."
#{
\temporary \override TextSpanner.style = #'line
\temporary \override TextSpanner.bound-details.right.arrow = ##t
\temporary \override TextSpanner.bound-details.left.text = \markup {
\fontsize #5
\override #'(thickness . 2)
\draw-line #'(-3 . -2) % draw stick
}
\temporary \override TextSpanner.bound-details.left.Y = #2
\temporary \override TextSpanner.bound-details.right.Y = #-1
\temporary \override TextSpanner.bound-details.left.padding = #3.5
\temporary \override TextSpanner.bound-details.right.padding = #-0.5
$(text-spanner-start-stop music scoop)
#})
\new PipeBandDrumStaff {
\displayMusic \drummode {
\scoop { d8 g d4 }
}
}