Liaison de valeur entre parenthèses

Bonjour à tous,

tout est dans le titre: mettre entre parenthèses une liaison de valeur, du
style: \tieParenthesize... mais cette commande n'est pas implémentée...

Bernard

···

-----
Cordialement

Bernard
--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Liaison-de-valeur-entre-parentheses-tp7580531.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Bonjour Bernard,

Voici une fonction qui m'avait été transmise en son temps, valable pour les
soufflets.
Sans l'avoir testé, ne suffirait-il pas de remplacer les 'hairpin' par des
'tie' ?

hairpinBetweenText =
#(define-music-function (parser location leftText rightText) (markup?
markup?)
   #{
     \once \override Hairpin #'stencil =
     #(lambda (grob)
        (let* ((orig (ly:grob-original grob))
               (siblings (if (ly:grob? orig)
                             (ly:spanner-broken-into orig)
                             '()))
               (hairpin-stencil (ly:stencil-aligned-to
                                 (ly:hairpin::print grob) Y CENTER))
               (left-addition (ly:stencil-aligned-to
                               (grob-interpret-markup grob leftText) Y
CENTER))
               (right-addition (ly:stencil-aligned-to
                                (grob-interpret-markup grob rightText) Y
CENTER)))
          (if (or (null? siblings)
                  (eq? grob (car siblings)))
              (set! hairpin-stencil
                    (ly:stencil-combine-at-edge
                     left-addition
                     X RIGHT
                     hairpin-stencil
                     0)))
          (if (or (null? siblings)
                  (eq? grob (car (reverse siblings))))
              (set! hairpin-stencil
                    (ly:stencil-combine-at-edge
                     hairpin-stencil
                     X RIGHT
                     right-addition
                     0.6)))
          hairpin-stencil))
   #})

% utilisation :
% parenthesizedHairpin = \hairpinBetweenText \markup "(" \markup ")"
% \parenthesizedHairpin
% c16\< d e f g a b c d e f g a\!
% ne vaut que pour le soufflet suivant la note concernée

%indications de volume entre soufflet
parenthesizedHairpin = \hairpinBetweenText \markup "(" \markup ")"
% idem entre crochets
bracketedHairpin = \hairpinBetweenText \markup "[" \markup "]"

Cette fonction possède un petit inconvénient : l'extension horizontale de
l'objet est quelque peu augmentée, d'où collisions possibles avec les
nuances textuelles, mais pour les liaisons, ça devrait au contraire assurer
un positionnement correct de cette liaison.

Cordialement,

Jean-François

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Liaison-de-valeur-entre-parentheses-tp7580531p7580534.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Alors voilà le code modifié pour être compatible avec les liaisons de valeur:

\version "2.17.95"

tieBetweenText =
#(define-music-function (parser location leftText rightText) (markup?
markup?)
   #{
     \once \override Tie #'stencil =
     #(lambda (grob)
        (let* ((orig (ly:grob-original grob))
               (siblings (if (ly:grob? orig)
                             (ly:spanner-broken-into orig)
                             '()))
               (tie-stencil (ly:stencil-aligned-to
                                 (ly:tie::print grob) Y CENTER))
               (left-addition (ly:stencil-aligned-to
                               (grob-interpret-markup grob leftText) Y
CENTER))
               (right-addition (ly:stencil-aligned-to
                                (grob-interpret-markup grob rightText) Y
CENTER)))
          (if (or (null? siblings)
                  (eq? grob (car siblings)))
              (set! tie-stencil
                    (ly:stencil-combine-at-edge
                     left-addition
                     X RIGHT
                     tie-stencil
                     1.5)))
          (if (or (null? siblings)
                  (eq? grob (car (reverse siblings))))
              (set! tie-stencil
                    (ly:stencil-combine-at-edge
                     tie-stencil
                     X RIGHT
                     right-addition
                     0.6)))
          tie-stencil))
   #})

% utilisation :
parenthesizedTie = \tieBetweenText \markup "(" \markup ")"
{
  \parenthesizedTie
d'2~d'
}

et le résultat donne ceci (chez moi en tous cas...):

<http://lilypond-french-users.1298960.n2.nabble.com/file/n7580539/tieparentese.jpeg&gt;

donc ton idée est juste... pour le placement correct, j'ai tenté ce qui
était à ma portée... sans résultat...

Bernard

···

-----
Cordialement

Bernard
--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Liaison-de-valeur-entre-parentheses-tp7580531p7580539.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Voilà, j'ai testé, et il manque un chouia pour que ça fonctionne :
- avec les liaisons de prolongation ( remplacer tous les \hairpin par \tie
en respectant la casse de la première lettre ) ça fonctionne, sinon que la
place est insuffisante, et qu'il faut allonger la distance entre les notes.

- avec une liaison ordinaire, ça ne fonctionne pas car il faut quelque part
indiquer la fin de la liaison.

Mais ma (mé)connaissance de Scheme s'arrête ici ...

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Liaison-de-valeur-entre-parentheses-tp7580531p7580540.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.