% ********************************************************************************
% * NoteHead styles für Percussion
% ********************************************************************************     
#(define (mySnare grob)
  (let* ((interfaces (ly:grob-interfaces grob)))
    (ly:grob-set-property! grob 'Y-offset #'-0.58))
    (ly:grob-set-property! grob 'stencil
            (grob-interpret-markup grob
              (make-lower-markup 0.5 (make-bold-markup "x")))))

#(define (myBassdrum grob)
  (let* ((interfaces (ly:grob-interfaces grob)))
    (ly:grob-set-property! grob 'Y-offset #'-2.5))
    (ly:grob-set-property! grob 'stencil
            (grob-interpret-markup grob
              (make-musicglyph-markup "pedal.*"))))

% ********************************************************************************
% * NoteHead styles mappings
% ********************************************************************************
#(define stencil-mapping-djembe
   (list
    (cons 'hisidestick         mySnare)
    (cons 'bassdrum            myBassdrum)
    ))

% ********************************************************************************
% * Scheme-Funktion zum Setzen der eigenen Notenköpfe
% ********************************************************************************
#(define (mod-notehead music)
   (if (eq? (ly:music-property music 'name) 'EventChord)
       (let ((n (length (ly:music-property music 'elements))))
         (do ((i 0 (1+ i))) ((= i n))
           (let* ((ne (list-ref (ly:music-property music 'elements) i))
                  (dt (ly:music-property ne 'drum-type))
                  (st (assoc dt stencil-mapping-djembe)))
             (if st (ly:music-set-property! ne 'tweaks (list (cons 'stencil  (cdr st))
                                                             (cons 'Y-offset (cdr st)))))))))
   music)

% ********************************************************************************
% * zugehöroige music-function
% ********************************************************************************
customNoteHeads =
#(define-music-function (parser location music) (ly:music?)
   (music-map (lambda (x) (mod-notehead x)) music))

% ********************************************************************************
% * Testfunktionen zur NoteHeadverschiebung
% ********************************************************************************
% Verschiebt leider beide NoteHeads aus dem "chord"
testEins = #(define-music-function (parser location music) (ly:music?)
  #{
    \once \override NoteHead #'extra-offset = #'(0.8 . 0)
    $music 
  #})

% Verschiebt zwar nur eine NoteHead, macht aber danach keine Bindebögen
testZwei = #(define-music-function (parser location musicA musicB) (ly:music? ly:music?)
  #{ 
	<< {
	     \once \override Voice.NoteColumn #'force-hshift = #0.8 % Verschiebe die obere Note
       $musicB 
     } \\ 
     { 
       \once \override Stem #'transparent = ##t % Weg mit dem Stem der unteren Note!
       \once \override Stem #'length = #0
       $musicA 
     } 
	>> 
  #})
