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

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

Re : Underline / Lyrics et changement de couleur


From: Daniel Bernair
Subject: Re : Underline / Lyrics et changement de couleur
Date: Mon, 29 Feb 2016 07:44:44 +0100

Merci à vous tous pour votre aide. Le résultat des tests est : le surlignage dans sa forme actuelle pose problèmes. 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. Ce sera d'autant plus facile à utiliser que dans les lyrics, j'utilise une variable staU que j'avais définie pour ne pas devoir taper à chaque fois \startTextSpan et stoU pour \stopTextSpan ainsi, quand mon vérificateur aura terminé je remplace la couleur rouge par noire.
Remy, je t'envoie séparément ma partition complète.
Amicalement,
Daniel Bernair
-----Message d'origine----- De : Jean-Jacques Gerbaud
Date : lundi 29 février 2016 01:43
À : Remy CLAVERIE ; Daniel Bernair ; Christophe Pochon
Cc : LilyPond
Objet : Re: Re : Underline / Lyrics et changement de couleur

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]