The Autohand works on the first note-event it can find
Included DocString for embellishments.ily
This commit is contained in:
Eric Teunis de Boone 2018-10-22 02:52:33 +02:00
parent ee97c53178
commit ca6e9110e8
2 changed files with 23 additions and 11 deletions

View File

@ -53,19 +53,29 @@ sruffddr = \drummode { \drumgrace { d16[\dr g g] } } % Swiss Ruff left with sta
%% Embellishment functions, automatic left or right %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define (autohandFunc left right)
(define-music-function (parser location note) (ly:music? )
#{
#(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand")
#{ $left #}
#{ $right #})
% print the note, else it won't show up
#note
#}
)
get-first-note = #(define-music-function (music) (ly:music?)
"Get the first note-event in @var{music}"
(let ((note(car (extract-typed-music music 'note-event))))
note
)
)
#(define (autohandFunc left right)
"Return a music function that prepends @var{left} if the first next note-event is of type 'left-hand,
else it will prepend @var{right}"
(define-music-function (parser location music) (ly:music? )
(let ((note (get-first-note music)))
#{
#(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand")
#{ $left #}
#{ $right #})
% print the note, else it won't show up
#music
#}
)
)
)
% Flam
flam = #(autohandFunc flamg flamd)
flamdr = #(autohandFunc flamgdr flamddr )

View File

@ -89,11 +89,13 @@ odr = #(define-event-function (parser location) () #{ -\tag #'tutti \startGroup
ofr = #(define-event-function (parser location) () #{ -\tag #'tutti \stopGroup #})
#(define (allbutlastnote mus)
"Reverse the elements, Pop of (cdr) the first element, Reverse again, put it in a SequentialMusic"
(let ((elts (ly:music-property mus 'elements)))
(make-music 'SequentialMusic 'elements (reverse (cdr (reverse elts))))
)
)
#(define (lastnote mus)
"Get the last element, make it a list, put it in a SequentialMusic"
(let ((elts (ly:music-property mus 'elements)))
(make-music 'SequentialMusic 'elements (list (last elts)))
)