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

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

Re: Re : Underline / Lyrics et changement de couleur


From: Pierre Perol-Schneider
Subject: Re: Re : Underline / Lyrics et changement de couleur
Date: Tue, 1 Mar 2016 10:16:25 +0100

Bonjour Daniel,

J'arrive un peu après la bataille..

Le 29 février 2016 à 07:44, Daniel Bernair <address@hidden> a écrit :
Merci à vous tous pour votre aide. Le résultat des tests est : le surlignage dans sa forme actuelle pose problèmes.

En quoi ?

 
Le choix typographique en Italic fonctionne très bien, mais n'est pas très visible. L'usage de la couleur fonctionne très bien en  alternant  \override LyricText #'color = #red  et \override LyricText #'color = #black à chaque début et fin de corrections, c'est parfait.

Attention : le pendant de \override ... est  \revert ... et non \override (warnings garantis).
Dans ton cas, je mettrai donc \revert LyricText.color
 
Après avoir tout lu moi, pour résumer, j'en suis là :

% File from Neil Puttochk
% code adapted from regression test `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 '()))))))))

%%% Fin du fichier "underline.ily" %%%%%%%%

%%%%%%%%%%%%%%%%%% Exemple %%%%%%%%%%%%%%%%%%%%

\version "2.18.2"

\include "italiano.ly"

%\include "underline.ily"

A_XXXIV = \relative do'' {
  \clef treble
  \key mi \major
  \time 3/4
  \autoBeamOff
  \compressFullBarRests
  R2.*10 sold8.[(la16] si4) si dod8.[( red16] mi4) mi r8 mi([ red]) dod([ si la]) sold4 la sold
  la4.( si16[ dod]) si4 red4( mi) la, \grace{sold8} fa2 dod' mi4 red sold, lad2 si r4 la!2 r4 la4 sold r R2.*2 la8.([ si16] dod4) dod si8.[( dod16] re4) re r8 re8[( dod]) si[( la sold]) la4 dod si lad2 si4 r fad mi'4 mi( red)
  % Page 4
  la!2 fad4 sold( la8) si fad2 mi4 sol sol sol2.\fermata r4 fad4 mi' mi( red!) la2 fad4 sold( la8) si fad2 mi r4 R2.*4 r4 sold8[( fad mi)] sold fad si la[( sold fad]) la \slurUp sold[( red mi la]) \slurNeutral sold4 r sold8[( fad mi])
  sold8 fad si la[( sold fad]) la \slurUp sold[( red mi la]) \slurNeutral sold4 r la8[( sold la]) dod si mi re[( dod re]) re re[( dod si] re) dod4 r la8[( sold la]) dod8 si mi re[( dod re]) re re[( dod si re]) do4 r do fad, fa2 fad4 sold8.[( la16] si4) sold
  la lad lad si do2 r4 dod red mi1 red4 lad4 do2. dod!2.
}

RAL_XXXIV = \lyricmode {
  O \startTextSpan wie brich -- stu mir das Herz,
  Je -- su, Je -- su welch ein Schmerz,
  dich al -- so zu se -- hen? O Je -- su,
  \stopTextSpan o
  \startTextSpan wie brich -- stu mir das Herz
  Je -- su Je -- su welch ein Schmerz dich al -- so
  zu se -- hen, welch ein Schmerz welch
  ein Schmerz dich al -- so zu se -- hen. \stopTextSpan
  War \startTextSpan -- test du beÿ al -- ler
  Pla -- ge ob nicht je -- mand Wie seid tra -- ge,
  fin -- det solch ein Jam -- mer Rei -- nen
  men -- schlich gnug dich zu be -- wri -- nen
  o dir soll ein Le -- bens lang mei -- ne
  Thrä -- nen und mein Dank nicht ert -- ste -- hen. \stopTextSpan
}

\score {
  \new Staff <<
    \new Voice = "A" { \A_XXXIV }
    \new Lyrics \lyricsto "A" { \RAL_XXXIV }
    \new Lyrics
      \with {
        \consists #underline-engraver
        \override TextSpanner.direction = #DOWN
        \override TextSpanner.style = #'line
        \override TextSpanner.outside-staff-priority = ##f
        \override TextSpanner.padding = #0.1 % sets the distance of the line from the lyrics
        \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))))
      }\lyricsto "A" { \RAL_XXXIV }
    \new Lyrics \with {
      \override LyricText.color = #blue
    }\lyricsto "A" { \RAL_XXXIV }
    \new Lyrics \with {
      \override LyricText.font-shape = #'italic
    }\lyricsto "A" { \RAL_XXXIV }
  >>
  \layout {}
}

~Pierre


reply via email to

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