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: Jean-Jacques Gerbaud
Subject: Re: Re : Underline / Lyrics et changement de couleur
Date: Mon, 29 Feb 2016 01:43:04 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

Le 28/02/2016 11:32, Remy CLAVERIE a écrit :
Bonjour Bernard,

Chez moi cela fonctionne. J'ai créer le fichier "underline.ily" ainsi :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% File from Neil Puttochk
% Works from version 2.13 to 2.16.2
% 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" %%%%%%%%

Et voici un exemple d'utilisation. Il est important de noter que dans la
section \layout, le context Lyrics est trè important :

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

\version "2.16.2"

\include "italiano.ly"

\include "underline.ily"

A_XXXIV = \relative do'' {

\key mi \major \time 3/4 \clef treble

\autoBeamOff

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 }

%

 >>

\layout {

\context {

\Lyrics

\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))))

}

}

}

%%%%%%%%%%%% Fin de l'exemple %%%%%%%%%%%%%%%%%%



Bonjour à tous,

Je viens de "vérifier" si tout fonctionnait.

J'ai enregistré le fichier "underline.ily" (pas mal torché !) et le fichier "essai_underline.ly".

La compilation se fait normalement mais *tout le texte* est souligné, sans aucune interruption.

Par contre si je modifie la ligne RAL_XXXIV = \lyricmode {
en y rajoutant, tout simplement la ligne

\override LyricText #'color = #blue

Tout le texte est en bleu, ce que demandait notre ami Daniel Bernair

Pour le soulignage avec interruptions je ne suis pas calé du tout en Scheme pour m'y atteler.

Bonne continuation


--
JJG
Ecoutez la musique "classique", ça détend !
découvrez l'histoire de votre famille : http://memoire-des-hommes.fr/



reply via email to

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