lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WAS] Soulignement discontinu


From: Pierre Perol-Schneider
Subject: [WAS] Soulignement discontinu
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 <address@hidden> 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.1298960.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
address@hidden
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
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr


reply via email to

[Prev in Thread] Current Thread [Next in Thread]