Am Mo., 6. Apr. 2020 um 10:49 Uhr schrieb Noeck :
>
> Wow. Thanks Harm! That makes sense and looks good.
>
> I never thought of a glissando here. But it actually makes sense. Now I
> wonder if a straight glissando line would even be more appropriate than
> a slur … I would read it more easily.
>
> Joram
Hi Joram,
you may try David Nalesnik's Code from
http://lilypond.1069038.n5.nabble.com/Glissando-on-single-note-in-chords-tt34672.html#a34676
Or my unfinished work-on-progress code (attached).
Cheers,
Harm
\version "2.19.82"
%%%
%%%
%%
%% GLISSANDI, DEFAULT AND BETWEEN FINGERINGS
%%
%%%
%%%
%% Thanks to David Nalesnik
%% See
%% http://lilypond.1069038.n5.nabble.com/Glissando-on-single-note-in-chords-tt34672.html#a34676
%%
%% http://lists.gnu.org/archive/html/lilypond-user/2019-02/msg00109.html
%% Glissandi should be set/selected via 'glissandoMap'
%% which may take additional pairs of string-numbers
%% i.e. a setting like:
%% '((0 . 0) (1 . 1) ("0" . "0") ("1" . "1"))
%% prints Glissandi between the first and the second (typed) note of two chords.
%% This is the default anyway.
%% If the new context-property 'fingerSlide' is set #t, additional Glissandi
%% will be printed between the fingerings of the first and the second (typed)
%% note of two chords.
%% For missing fingerings the NoteHead is taken instead.
%%
%% A possible bow is further customizable modifing the newly introduced
%% Glissando.bound-details.left/right.y-padding
%% (a numerical value, default is 1)
%%
%% Glissando-stubs are possible with 'glissando::print-harm' taking
%% optional arguments for left and/or right stubs and for further selection
%% (like finger-gliss-bow-stencil)
%% The length of the stubs is settable, with an override for
%% Glissando.bound-details.left/right.left/right-gliss-stub-length
%% (a numerical value, default is 0.6)
%%
%% The other known subproperties of Glissando.bound-details may still be
%% modified.
%%
%% The provided music-function 'detailedGlissando' may be used to
%% determine which of the various styles should be used for which glissando.
#(define (define-translator-property symbol type? description)
(if (not (and (symbol? symbol)
(procedure? type?)
(string? description)))
(ly:error "error in call of define-translator-property"))
(if (not (equal? (object-property symbol 'translation-doc) #f))
(ly:error (_ "symbol ~S redefined") symbol))
(set-object-property! symbol 'translation-type? type?)
(set-object-property! symbol 'translation-doc description)
symbol)
#(for-each
(lambda (x)
(apply define-translator-property x))
`((fingerSlide
,boolean?
"Should printing Glissandi between Fingerings be possible?")))
#(define glissando::print-harm
(lambda (grob)
"Prints Glissando-stubs, instead of a line. The length of the stubs can be
modified by an override for
bound-details.left/right.left/right-gliss-stub-length, default is 0.6."
(let* ((gliss-style (ly:grob-property grob 'style 'line))
(gliss-count (ly:grob-property grob 'glissando-index))
(left-bound (ly:spanner-bound grob LEFT))
(right-bound (ly:spanner-bound grob right))
(sign
(lambda (x)
(if (= x 0)
0
(if (< x 0) -1 1
(sys (ly:grob-system grob))
(left-coord (ly:grob-relative-coordinate left-bound sys X))
(right-coord (ly:grob-relative-coordinate right-bound sys X))
(left-bound-info (ly:grob-property grob 'left-bound-info))
(left-padding (assoc-get 'padding left-bound-info))
(Y-left (assoc-get 'Y left-bound-info))
(X-left (assoc-get 'X left-bound-info))
(y-padding-default
(if (eq? gliss-style 'bow) 1 0))
(y-left-padding
(assoc-get 'y-padding left-bound-info y-padding-default))
(left-gliss-stub
(assoc-get 'left-gliss-stub-length left-bound-info 0.6))
(right-bound-info (ly:grob-property grob 'right-bound-info))
(Y-right (assoc-get 'Y right-bound-info))
(right-padding (assoc-get 'padding right-bound-info))
(X-right (assoc-get 'X right-bound-info))
(y-right-padding
(assoc-get 'y-padding right-bound-info y-padding-default))
(right-gliss-stub
(assoc-get 'right-gliss-stub-length right-bound-info 0.6))
(thick (ly:grob-property grob 'thickness 0.12))
(x-gliss-start (- X-left left-coord (- left-padding)))
(x-gliss-end (- X-right left-coord (+ right-padding)))
(y-gliss-start (+ Y-left (* y-left-padding (sign Y-left
(y-gliss-end (+ Y-right (*