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

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

Re: Double barre de mesure suvie d'une reprise


From: Remy CLAVERIE
Subject: Re: Double barre de mesure suvie d'une reprise
Date: Tue, 24 Mar 2020 12:43:28 +0100 (CET)

Bonjour Gérard,

 

À partir des solutions suggérées par Valentin, voici une proposition qui me semble te convenir.

Bonne journée,

Rémy

 

% ####################################################################

% Début du fichier

% ####################################################################

\version "2.18.2"

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Code provenant de http://lsr.di.unimi.it/LSR/Item?id=1032
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define (define-grob-property symbol type? description)
   (if (not (equal? (object-property symbol 'backend-doc) #f))
       (ly:error (_ "symbol ~S redefined") symbol))

   (set-object-property! symbol 'backend-type? type?)
   (set-object-property! symbol 'backend-doc description)
   symbol)

#(for-each
  (lambda (x)
    (apply define-grob-property x))
  `((tip
     ,symbol?
     "Which bracket tip should be printed for certain BarLines?")))

%% If other symbols than 'up or 'down are used for `BarLine.tip' an
%% automatic procedure takes over trying to choose the correct BarLine, which
%% may work. If not, use 'up and 'down at appropriate place.
%% Limitation:
%% `CertainBracketTipsBarLines' will only work for the default repet-bar-lines,
%% i.e. ":..:", ":|.", ".|:"
CertainBracketTipsBarLines =
\override Score.BreakAlignGroup.after-line-breaking =
#(lambda (grob)
   (let* ((elts (ly:grob-object grob 'elements))
          (bar-lines
           (if (null? elts)
               '()
               (filter
                (lambda (g) (grob::has-interface g 'bar-line-interface))
                (ly:grob-array->list elts))))
          (possible-relevant-bar-lines
           (filter
            (lambda (b) (not (null? (ly:grob-property b 'tip))))
            bar-lines)))
     (if (and (>= (length bar-lines) 2)
              (not (null? possible-relevant-bar-lines))
              (member
               (ly:grob-property (car bar-lines) 'glyph-name)
               '(":..:" ":|." ".|:")))
         (let* ((possible-top-bar-lines
                 (filter
                  (lambda (b) (eq? (ly:grob-property b 'tip) 'up))
                  bar-lines))
                (top-bar-lines
                 (if (null? possible-top-bar-lines)
                     (list (car bar-lines))
                     possible-top-bar-lines))
                (bar-lines-list-length (length top-bar-lines))
                (possible-bottom-bar-lines
                 (filter
                  (lambda (b) (eq? (ly:grob-property b 'tip) 'down))
                  bar-lines))
                (bottom-bar-lines
                 (if (null? possible-bottom-bar-lines)
                     (list (last bar-lines))
                     possible-bottom-bar-lines))
                (top-stil
                 (ly:grob-property (car top-bar-lines) 'stencil))
                (bottom-stil
                 (ly:grob-property (car bottom-bar-lines) 'stencil))
                (layout (ly:grob-layout grob))
                (props
                 (ly:grob-alist-chain
                  grob
                  (ly:output-def-lookup layout 'text-font-defaults)))
                (font
                 (ly:paper-get-font
                  layout
                  (cons '((font-encoding . feta)) props)))
                (tip (ly:font-get-glyph font "brackettips.up"))
                (top-glyph-name
                 (ly:grob-property (car top-bar-lines) 'glyph-name))
                (up-tip
                 (cond ((string=? top-glyph-name ":|.")
                        (ly:stencil-translate-axis
                         (ly:stencil-scale tip -1 1)
                         (cdr (ly:stencil-extent top-stil X))
                         X))
                   ((string=? top-glyph-name  ":..:")
                    (let ((kern
                           (/ (ly:grob-property (car top-bar-lines)
                                'kern)
                             10))
                          (top-stil-ext (ly:stencil-extent top-stil X)))
                      (ly:stencil-translate-axis
                       (ly:stencil-combine-at-edge
                        (ly:stencil-scale tip -1 1)
                        X RIGHT
                        tip
                        kern)
                       (- (interval-center top-stil-ext) (/ kern 2))
                       X)))
                   (else tip)))
                (down-tip (ly:stencil-scale up-tip 1 -1)))
           (for-each
            (lambda (grobb bar-stil dir tip-style)
              (ly:grob-set-property! grobb 'stencil
                (ly:stencil-combine-at-edge
                 bar-stil
                 Y
                 dir
                 tip-style
                 0)))
            (append top-bar-lines bottom-bar-lines)
            (append
             (make-list bar-lines-list-length top-stil)
             (make-list bar-lines-list-length bottom-stil))
            (append
             (make-list bar-lines-list-length 1)
             (make-list bar-lines-list-length -1))
            (append
             (make-list bar-lines-list-length up-tip)
             (make-list bar-lines-list-length down-tip)))))))

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

%%%%%%%%%%%%%%%%%%%%
% Définition de la nouvelle bar
\defineBarLine "||-.|:" #'("||" ".|:" "!")
%%%%%%%%%%%%%%%%%%%%
\header {
  title = "Ronde des Valses"
  subtitle = "N° 3"
  instrument = "Accordéon"
  poet = "E. Basile"
  %% Je me permets d’ajouter un lien
  %% cliquable dans le PDF -vv
  tagline = \markup {
    Gravé avec LilyPond, un logiciel gratuit et libre
    \concat { ( \with-url #"http://lilypond.org" http://lilypond.org )   }
  }
}
\paper {
 
  date = #(strftime "%d %b %Y" (localtime (current-time)))

  oddFooterMarkup = \markup \fill-line {
    \fontsize #-4 { \fromproperty #'header:title }
    { \on-the-fly  #last-page
      \fontsize #-1 \fromproperty  #'header:tagline
      % dernière page
      \center-column {
        \line \italic \fontsize #-1 {GR le \date }}
    }
  }
}
\layout {
  \override Score.BarNumber #'color = #'(0.5 0 0)
  \override Score.BarNumber #'font-shape = #'italic
  \override Score.BarNumber #'font-size = #1
}

global = {
  \key d \major
  \time 3/4
  \tupletUp
  \set Score.markFormatter = #format-mark-circle-numbers
}

right = \relative c' {
  \global
  a8\f b cis\< d e fis
  g fis e fis g a
  b a g a b d
  cis b a b cis d
  %% Le crescendo s’arrête sur la note
  %% plutôt que sur le silence;
  %% mais cela requiert l’option suivante -vv
  \override Hairpin.to-barline = ##f
  e4^^\! r r
  %% il manque une des deux double-notes -vv
  <a, a'>^^ r r
  <a, a'>^^ r r
  %% R1*3/4 est correct, mais il y a plus
  %% simple : -vv
  R2.*5\break
  \mark \default

  %% Hm. Les crochets ne couvrent qu’une portée
  %% à la fois. Soit ne pas utiliser \bar du tout,
  %% soit utiliser l’astuce décrite sur
  %% http://lsr.di.unimi.it/LSR/Item?id=1032
  \bar "||-.|:"

  %% C’est plutôt comme ceci
  %% qu’on va faire : -vv
  \repeat volta 2 {
    %% Il y a une grande liaison de phrasé -vv
    fis'4\p\< (
    %% Je me permets de suggérer un rouge
    %% qui fait moins mal aux yeux -vv
    ^\markup \with-color #'(0.5 0 0) { \small \bold TESORO \small \bold MIO \small \bold (E. \small \bold BECCUCCI)} a cis
    e2\! d4
    %% C’est plutôt une liaison de tenue
    %% que de legato -vv
    fis2.\> ~
    %% Même remarque pour le decrescendo -vv
    fis4 )\! r\! \tuplet 3/2 {e8 ( d cis)}
    e4 r \tuplet 3/2 {d8 ( cis b)}
    d4 r \tuplet 3/2 {cis8 ( b a)}

    \bar "||"
  } %% fin de la partie invariante de
  %% la reprise, maintenant voici 1 et 2 -vv
  \alternative {
    {
      %% Il manque d’autres liaisons -vv
      cis2. (
      g4) r r
      cis,( e g
      b2 a8 g
      %% Une autre note tenue -vv
      fis2. ~
      fis4) r r
      gis( b d
      fis2) e8 d
      %% vous pouvez utiliser "q"
      %% gagner du temps -vv
      cis4 <g cis g'>4. q8 q2 r4
    } %% fin du 1 ; voici le 2 -vv
    {
      cis2. b4  r r
    }
  }
}
%% Je me permets de compléter
%% la main gauche -vv
left = \relative c' {
  \clef bass
  \key d \major
  <a, a'>4 r r R2.
  <e e'>4 r r <a a'> r r
  e r r a r r a r r
  R2.
  d4^\f d' d a, d' d
  d,^\mf^\> d' d a, d' d
  %% Première reprise
  d,\! d' d a, d' d
  d, d' d a, d' d
  d, d' d a, d' d
  e,, a' a a, a' a
  e, a' a a, a' a
  b, b' b b, b' b
  e,, e' e gis, e' e
  %% à partir de là j’invente
  %% parce que ce n’est pas
  %% sur l’image... -vv
  a, <a a'>4. q8 q2 r4
  s1.
}
%% Et maintenant on met tout ça ensemble,
%% sur deux portées et dans un PianoStaff -vv
\score {
  \new PianoStaff
  <<
    \new Staff \right
    \new Staff \left
  >>
  \layout {
    indent = 0\cm
    \context {
      \Score
      \CertainBracketTipsBarLines
    }
    \context {
      \Staff
      \override BarLine.tip = #'auto
    }
  }
}

% ####################################################################

% Fin du fichier

% ####################################################################

 

 

 

 

> Message du 24/03/20 10:00
> De : "gegeours" <address@hidden>
> A : address@hidden
> Copie à :
> Objet : Re: Double barre de mesure suvie d'une reprise
>
> Bonjour vvillenave,
>
> Ce matin j'ai repris toutes les indications mentionnées sur le déroulement
> de la partition;
>
> 1°) j'ai corrigé la reprise avec \repeat volta2 et \alternative (ce qui
> permet de ne pas mettre les signes de reprises),
>
> 2°) pour les accords j'ai utilisé comme indiqué q8 et q 2 (ce qui permet en
> effet de ne pas répéter les accords lorsqu'ils sont de même nature
>
> 3°) au début de la partition je ne suis pas arrivé à mettre le lien url
> cliquable dans le PDF (\concat (\with_url "http://lilypond etc....). J'ai
> du rater quelque chose.
>
> J'abandonne la reprise avec crochet.
>
> Encore merci pour toutes les précisions ou compléments apportés.
>
>
>
> --
> Sent from: http://lilypond-french-users.1298960.n2.nabble.com/
>
>

reply via email to

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