Subject: [WAS] Soulignement discontinu

From: Pierre Perol-Schneider <[email-masked]>
Date: Thu, 13 Oct 2016 10:54:31 +0200

Bonjour Jean-Pierre,

Il est préférable de créer un fil spécifique pour chaque question et de
joindre un mini-exemple :
http://lilypond.org/tiny-examples.fr.html

Pour répondre à ta question:

%%%%%%%%%%%
\version "2.18.2"

% Code d'après le test de régression `scheme-text-spanner.ly' :
#(define (add-bound-item spanner item)
   (if (null? (ly:spanner-bound spanner LEFT))
       (ly:spanner-set-bound! spanner LEFT item)
       (ly:spanner-set-bound! spanner RIGHT item)))

#(define (axis-offset-symbol axis)
   (if (eq? axis X) 'X-offset 'Y-offset))

#(define (set-axis! grob axis)
   (if (not (number? (ly:grob-property grob 'side-axis)))
       (begin
         (set! (ly:grob-property grob 'side-axis) axis)
         (ly:grob-chain-callback
          grob
          (if (eq? axis X)
              ly:side-position-interface::x-aligned-side
              ly:side-position-interface::y-aligned-side)
          (axis-offset-symbol axis)))))

#(define (underline-engraver context)
   (let ((span '())
         (finished '())
         (current-event '())
         (event-drul '(() . ())))
     (list (cons 'listeners
                 (list (cons 'text-span-event
                             (lambda (engraver event)
                               (if (= START (ly:event-property event
'span-direction))
                                   (set-car! event-drul event)
                                   (set-cdr! event-drul event))))))
           (cons 'acknowledgers
                 (list (cons 'lyric-syllable-interface
                             (lambda (engraver grob source-engraver)
                               (if (ly:spanner? span)
                                   (begin
                                     (ly:pointer-group-interface::add-grob
span 'note-columns grob)
                                     (add-bound-item span grob)))
                               (if (ly:spanner? finished)
                                   (begin
                                     (ly:pointer-group-interface::add-grob
finished 'note-columns grob)
                                     (add-bound-item finished grob)))))))
           (cons 'process-music
                 (lambda (trans)
                   (if (ly:stream-event? (cdr event-drul))
                       (if (null? span)
                           (ly:warning "cannot find start of underline")
                           (begin (set! finished span)
                                  (ly:engraver-announce-end-grob trans
finished current-event)
                                  (set! span '())
                                  (set! current-event '())
                                  (set-cdr! event-drul '()))))
                   (if (ly:stream-event? (car event-drul))
                       (begin (set! current-event (car event-drul))
                              (set! span (ly:engraver-make-grob trans
'TextSpanner current-event))
                              (set-axis! span Y)
                              (set-car! event-drul '())))))
           (cons 'stop-translation-timestep
                 (lambda (trans)
                   (if (and (ly:spanner? span)
                            (null? (ly:spanner-bound span LEFT)))
                       (set! (ly:spanner-bound span LEFT)
                             (ly:context-property context
'currentMusicalColumn)))
                   (if (ly:spanner? finished)
                       (begin
                         (if (null? (ly:spanner-bound finished RIGHT))
                             (set! (ly:spanner-bound finished RIGHT)
                                   (ly:context-property context
'currentMusicalColumn)))
                         (set! finished '())
                         (set! event-drul '(() . ()))))))
           (cons 'finalize
                 (lambda (trans)
                   (if (ly:spanner? finished)
                       (begin
                         (if (null? (ly:spanner-bound finished RIGHT))
                             (set! (ly:spanner-bound finished RIGHT)
                                   (ly:context-property context
'currentMusicalColumn)))
                         (set! finished '())))
                   (if (ly:spanner? span)
                       (begin
                         (ly:warning "unterminated underline")
                         (ly:grob-suicide! span)
                         (set! span '()))))))))

%% Test :
\score {
  \relative c' {
    c d e f g a b c
    \bar "|."
  }
  \addlyrics { do ré mi fa sol \startTextSpan la si do \stopTextSpan }
  \layout {
    \context {
      \Lyrics
      \consists #underline-engraver
      \override TextSpanner.direction = #DOWN
      \override TextSpanner.style = #'dashed-line
      \override TextSpanner.dash-fraction = #0.3 % <= réglage du pointillé 1
      \override TextSpanner.dash-period = #1 % <= réglage du pointillé 2
      \override TextSpanner.outside-staff-priority = ##f
      \override TextSpanner.padding = #0.5 % <= réglage de la distance du
soulignage
      \override TextSpanner.bound-details =
        #`((left . ((Y . 0)
                    (padding . 0)
                    (attach-dir . ,LEFT)))
           (left-broken . ((end-on-note . #t)))
           (right . ((Y . 0)
                     (padding . 0)
                     (attach-dir . ,RIGHT))))
    }
  }
}
%%%%%

Cordialement,
Pierre

Le 13 octobre 2016 à 09:43, lanquetin jean-pierre <[email-masked]>
a écrit :

> Bonjour
>
> j'essaie de trouver comment souligner quelques paroles avec un
> soulignement discontinu.
>
> le manuel donne des tas d'exemples avec les signes musicaux de liaison, de
> glissando etc.
> mais je ne vois pas comment stipuler le "dashed-line" dans ce cas.
>
> de plus, je trouve que le soulignement est trop près du texte, si je
> pouvais le baisser un peu !
>
> merci d'avance
>
> Jean-Pierre
>
>
> Le 13/10/2016 à 09:01, Bernard Meylan a écrit :
>
>> legoss wrote
>>
>>> Mais dans quel but passer de *.ly à *.xml?
>>>
>> Pour ma part, ce serait, une fois une partition de choeur terminée avec
>> Lily, de pouvoir utiliser un programme comme Harmony Assistant pour
>> générer
>> des fichiers WAV (ce qu'il fait très bien) pour l'apprentissage des 4
>> voix.
>>
>> Bernard
>>
>>
>>
>>
>> -----
>> Cordialement
>>
>> Bernard
>> --
>> View this message in context: http://lilypond-french-users.1
>> 298960.n2.nabble.com/exporter-les-fichiers-ly-en-xml-
>> tp7580622p7584261.html
>> Sent from the LilyPond French Users mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> liste de diffusion lilypond-user-fr
>> [email-masked]
>> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>>
>>
>
> ---
> L'absence de virus dans ce courrier électronique a été vérifiée par le
> logiciel antivirus Avast.
> https://www.avast.com/antivirus
>
>
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>