Ciao a tutti!
Non i pare che ci sia la possibilità di avere un glissando doppio con un solo 
comando ma è necessario impostare una \voice per glissando. 
La mia domanda è questa: è davvero così o sono io che ho preso un granchio?
Grazie!
-- 

oiram/bin/selom
#(define (script x)
(make-music
'TextScriptEvent
               'direction #'DOWN
               'text (markup #:vcenter #:circle #:finger x))
)

#(define (add-script m x)
   (if (equal? (ly:music-property m 'name) 'EventChord)
       (set! (ly:music-property m 'elements)
             (cons (script x)
                  (ly:music-property m 'elements)))
       (let ((es (ly:music-property m 'elements))
             (e (ly:music-property m 'element)))
         (map (lambda (y) (add-script y x)) es)
         (if (ly:music? e)
             (add-script e x))))
   m)

Strd = #(define-music-function (parser location script music )
                                        ( string? ly:music? )
                (add-script music script))

strd = #(define-music-function (parser location str music) (string? ly:music?)
            (let ((spanned-music
                    (let ((first-element #f) (last-element #f) (first-found? #f))
                      (music-map (lambda (m)
                                   (if (equal? (ly:music-property m 'name) 'EventChord)
                                       (begin (if (not first-found?)
                                             (begin  (set! first-found? #t) (set! first-element m)))
                                         (set! last-element m)))
                                   m)
                                 music)
                      (if first-found?
                          (begin
                            (set! (ly:music-property first-element 'elements)
                                  (cons (make-music 'TextSpanEvent 'span-direction -1)
                                        (ly:music-property first-element 'elements)))
                            (set! (ly:music-property last-element 'elements)
                                 (cons (make-music 'TextSpanEvent 'span-direction 1)
                                       (ly:music-property last-element 'elements)))))
                      music)))
         (make-music 'SequentialMusic
            'origin location
             'elements (list #{
\once \override TextSpanner #'font-size = #-3
\once \override TextSpanner #'direction = #-1
\once \override TextSpanner #'style = #'solid
\once \override TextSpanner #'dash-period = #4
\once \override TextSpanner #'bound-details = #'((left ( Y . 0)) (right (Y . 0) (spanner . 20)(attach-dir . 1)))
\once \override TextSpanner #'bound-details #'left #'text = \markup { \vcenter  \circle  \finger $str }
\once \override TextSpanner #'bound-details #'right #'text = \markup {  \draw-line  #'( 0 . .7) }#}
                          spanned-music))))
#(define (script x)
(make-music
'TextScriptEvent
               'direction #'UP
               'text (markup #:vcenter #:circle #:finger x))
)

#(define (add-script m x)
   (if (equal? (ly:music-property m 'name) 'EventChord)
       (set! (ly:music-property m 'elements)
             (cons (script x)
                  (ly:music-property m 'elements)))
       (let ((es (ly:music-property m 'elements))
             (e (ly:music-property m 'element)))
         (map (lambda (y) (add-script y x)) es)
         (if (ly:music? e)
             (add-script e x))))
   m)

Str = #(define-music-function (parser location script music )
                                        ( string? ly:music? )
                (add-script music script))

str = #(define-music-function (parser location str music) (string? ly:music?)
            (let ((spanned-music
                    (let ((first-element #f) (last-element #f) (first-found? #f))
                      (music-map (lambda (m)
                                   (if (equal? (ly:music-property m 'name) 'EventChord)
                                       (begin (if (not first-found?)
                                             (begin  (set! first-found? #t) (set! first-element m)))
                                         (set! last-element m)))
                                   m)
                                 music)
                      (if first-found?
                          (begin
                            (set! (ly:music-property first-element 'elements)
                                  (cons (make-music 'TextSpanEvent 'span-direction -1)
                                        (ly:music-property first-element 'elements)))
                            (set! (ly:music-property last-element 'elements)
                                 (cons (make-music 'TextSpanEvent 'span-direction 1)
                                       (ly:music-property last-element 'elements)))))
                      music)))
         (make-music 'SequentialMusic
            'origin location
             'elements (list #{
\once \override TextSpanner #'font-size = #-3
\once \override TextSpanner #'direction = #0
\once \override TextSpanner #'style = #'solid
\once \override TextSpanner #'dash-period = #0.4
\once \override TextSpanner #'bound-details = #'((left (Y . 0)) (right (Y . 0) (padding . 0.25) (attach-dir . 2)))
\once \override TextSpanner #'bound-details #'left #'text = \markup { \vcenter  \circle  \finger $str }
\once \override TextSpanner #'bound-details #'right #'text = \markup {  \draw-line  #'( 0 . -.7) }#}
                          spanned-music))))

cofon ={\cadenzaOff \bar "|"\cadenzaOn}
cofn ={\cadenzaOff \bar "|"\cadenzaOn}
snu = { \set stringNumberOrientations = #'(up) }
snd = { \set stringNumberOrientations = #'(down) }
snl = { \set stringNumberOrientations = #'(left) }
snr = { \set stringNumberOrientations = #'(right)}
fou = { \set fingeringOrientations = #'(up) }
fod = { \set fingeringOrientations = #'(down) }
fol = { \set fingeringOrientations = #'(left) }
for = { \set fingeringOrientations = #'(right) }
sfou = { \set strokeFingerOrientations = #'(up) }
sfod = { \set strokeFingerOrientations = #'(down) }
sfol = { \set strokeFingerOrientations = #'(left) }
sfor = { \set strokeFingerOrientations = #'(right) }
gt = \override Glissando #'breakable = ##T
gl = \glissando
gT = \override Glissando #'thickness = #2
ignore = \override NoteColumn #'ignore-collision = ##t
\version "2.12.2"
\paper{
#(set-paper-size "a4")
bottom-margin = 1.2\cm
top-margin = 0.4\cm
ragged-last-bottom = ##f
ragged-bottom = ##f
between-system-space =  5\cm
%{between-system-padding = #5%}
}
manualBeam =
#(define-music-function (parser location beg-end)
                        (pair?)
#{
  \once \override Beam #'positions = #$beg-end
#})
\layout {
indent = 0.5\cm
}

#(set-global-staff-size 22)

#(define (calc-custom-stroke-text grob)
   (let ((text (ly:event-property (event-cause grob) 'text)))
     (if (string? text)
         (markup #:center-column (#:lower 2.5 "^" text))
         (stroke-finger::calc-text grob))))

#(define (make-stroke-finger location finger)
   (apply make-music
          (append
           (list
            'StrokeFingerEvent
            'origin location)
           (if  (string? finger)
                (list 'text finger)
                (list 'digit finger)))))

da = #(define-music-function (parser location) ()
        (make-stroke-finger location "a"))
dm = #(define-music-function (parser location) ()
        (make-stroke-finger location "m"))
di = #(define-music-function (parser location) ()
        (make-stroke-finger location "i"))
dp = #(define-music-function (parser location) ()
        (make-stroke-finger location "p"))
dan = #(define-music-function (parser location) ()
         (make-stroke-finger location 4))
dmn = #(define-music-function (parser location) ()
         (make-stroke-finger location 3))
din = #(define-music-function (parser location) ()
         (make-stroke-finger location 2))
dpn = #(define-music-function (parser location) ()
         (make-stroke-finger location 1))
  \new Staff <<
  \new Voice
\relative c, {
  \clef "G_8"
  \key e \minor
  \time 3/4
 \set strokeFingerOrientations = #'(up)
  \override StrokeFinger #'avoid-slur = #'inside
  \override StrokeFinger #'add-stem-support = ##t
  \override StrokeFinger #'font-size = #0
  \override StrokeFinger #'text = #calc-custom-stroke-text
%{  \once \override Staff.TimeSignature #'stencil = ##f%}
  \override StringNumber #'staff-padding = #'()
  \fol \snd
  \voiceOne
  \override Slur #'height-limit = #4
  %1 rigo
  \stemUp \partial 4*1 <b''-0-\dm>4|
  %1
                 \manualBeam #'(6.5 . 6.5) <e-3\3-\di> 8 [ \once\override StrokeFinger #'extra-offset = #'(0 . 2) \sfou \acciaccatura<a-4>
                 \stemUp\snd\once\override Glissando #'bound-details #'left #'padding = #1 \once \override Glissando
                 #'bound-details #'right #'padding = #2.5 <g-2-\dmn e-3\3-\din> 16\gl \for\override Glissando
                 #'bound-details #'right #'padding = #2 \override Glissando #'bound-details #'left #'padding = #2.2
                 < fis dis-3 >\gl] \fol< g e-3 > 8 [ \override Glissando#'bound-details #'right #'padding = #1 \override Glissando
                 #'bound-details #'left #'padding = #1 < b g-2> 16\gl \for\override Glissando#'bound-details #'right #'padding = #2 \override
                 Glissando #'bound-details #'left #'padding = #2.2 < ais fis-2 >\gl ]
                 \override Glissando#'bound-details #'right #'padding = #2 \override Glissando #'bound-details #'left #'padding = #1 \fol< b
                 g-2 > 8\gl [ <e,\3-3 g-2 > ]   |
                 %2
                 < fis dis > 8 [ < fis dis > 16 < eis cis > ] < fis dis > 8 [ <a fis > 16 < gis eis! > ] < a fis > 8 [
                 <fis dis >]|\break\noPageBreak
                 %3
                 < g e > 8 [ < g e > 16 < fis dis > ] < g e > 8 [ < b g > 16 <ais fis > ] < b g > 8 [ < g e > ]   |
                 %4
                 < a fis > 8 [ < a fis > 16 < gis eis > ] < a fis > 8 [ < fis d! > ] < g eis > [ < a fis > ]   |\break\noPageBreak
                 %5
                 < g b > 8 [ <b g> 16 \once \override NoteColumn #'force-hshift = #1 <ais fis> ] <b g> 8 [ <d b> 16
                 <cis ais!> ] <d b> 8 [ <b g> ]   |
                 %6
                 <a fis> 8 [ <a fis> 16 <gis eis> ] <a fis> 8 [ <a c> 16 <b gis!> ] <a c> 8 [ <a fis> ]|\break\noPageBreak
                 %7
                 <e g> 8 [ <g e> 16 <fis dis> ] <g e> 8 [ <b e,> ] <a fis> [ <g e> ]   |
                 %8
                 <fis dis> 8 r r4 r8  b  | \break\noPageBreak
                 %9
                 \manualBeam #'(6.5 . 6.5) <g, e'> 8 [ \acciaccatura a'16 <g e> <fis dis> ] <g e> 8 [ <b g> 16 <ais fis> ] <b g> 8 [ <g e> ]   |
                 %10
                 <fis dis> 8 [ <fis dis> 16 <eis cis> ] <fis dis> 8 [ <a fis> 16 <gis eis!> ] <a fis> 8 [ <fis dis> ]|
                 \break\noPageBreak
                 %11
                 <g e> 8 [  <g e>16 <fis dis> ] <g e> 8 [ <b g> 16 <ais fis> ] <b g> 8 [ < g e> ]   |
                 %12
                 < fis a > 8 [ < a fis > 16 < gis eis > ] < a fis> 8 [ <fis d> ] < g e> [ < fis a> ]   |\break\noPageBreak
                 %13
                 < b g > 8 [ < b g > 16 < ais fis > ] < b g > 8 [ < d b > 16 < cis ais > ] < d b > 8 [ < b g > ]   |
                 %14
                 < a fis > 8 [ < a fis > 16 < gis eis > ] < fis a > 8 [ < a c > ] < b gis! > [ < a fis > ]   |\break\noPageBreak
                 %15
                 b8\rest  < g e b > r < fis c a > r < dis a fis >   |
                 %16
                 < e g, > 4 s s   |\pageBreak
                \bar "||"
}
\new Voice

%{\relative c,%} {
  \clef "G_8"
  \key e \minor
  \time 3/4
  \voiceTwo
\set strokeFingerOrientations = #'(down)
  \override StrokeFinger #'avoid-slur = #'inside
  \override StrokeFinger #'add-stem-support = ##t
  \override StrokeFinger #'font-size = #0
  \override StrokeFinger #'text = #calc-custom-stroke-text
  \fol
  %note
  %1 rigo
  \partial 4*1 \stemDown \snr<b,-1\6> 4   |
                %1
                \stemDown e, 8 c\rest r4 r8 e,   |
                %2
                \stemDown b, 8 r r4 r8 b,   |
                %3
                \stemDown e, 8 r r4 r8 e   |
                %4
                \stemDown d 8 r r \once \override NoteColumn #'force-hshift = #0.3 c' [ b a ]   |
                %5
                \stemDown g 8 r r4 r8 g   |
                %6
                \stemDown d 8 r r4 r8 dis   |
                %7
                \stemDown e 8 r r g [ a ais ]   |
                %8
                \stemDown b 8 [ \acciaccatura c'16 b ais ] b 8 [ b' ] \stemDown b, r   |
                %9
                \stemDown e, 8 r r4 r8 e,   |
                %10
                \stemDown b, 8 r r4 r8 b,   |
                %11
                \stemDown e, 8 r r4 r8 e   |
                %12
                \stemDown d 8 r r \once \override NoteColumn #'force-hshift = #0.3 c' [ b a ]   |
                %13
                \stemDown g 8 r r4 r8 g   |
                %14
                \stemDown d 8 r r4 r8 dis   |
                %15
                \stemDown e 8 r a, r b, r   |
                %16
                r8 \stemDown e e, 4 r   |
                \bar "||"
 }
\new Voice

 {
  \clef "G_8"
  \key e \minor
  \time 3/4
  \voiceThree
\set strokeFingerOrientations = #'(up)
  \override StrokeFinger #'avoid-slur = #'inside
  \override StrokeFinger #'add-stem-support = ##t
  \override StrokeFinger #'font-size = #0
  \override StrokeFinger #'text = #calc-custom-stroke-text
  %1
  \partial 4*1 \hideNotes \override NoteColumn #'force-hshift = #0 s4 s8 \override Glissando #'bound-details #'left#'padding = #0
  \once \override Glissando #'bound-details #'right #'padding = #0.5 \once \override Glissando #'bound-details #'right #'padding = #1 g'16\gl
  \once\override Glissando#'bound-details #'right #'padding = #2 \once\override Glissando #'bound-details #'left #'padding = #2.2 \for <fis'-2>\gl\fol<g'-2>8
  \once\override Glissando#'bound-details #'right #'padding = #1 \once\override Glissando #'bound-details #'left #'padding = #1 <b'-1>16\gl
\for<ais'-1>\gl\fol<b'-1>8
}
>>
_______________________________________________
lilypond-user mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to