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

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

Re: markup avec cercle plein (circle fill)


From: Valentin Villenave
Subject: Re: markup avec cercle plein (circle fill)
Date: Sun, 3 May 2020 23:36:07 +0200

On 5/3/20, survoje <address@hidden> wrote:
> Ça marche, j'ai réussi à comprendre, à adapter quelques réglages.

C’est même un chouia plus simple : les fonctions \tg etc. permettent
de n’ajouter que ce qui change : au lieu de
    \pg \pc \tc \tg
on peut mettre :
   \pg \c \t \g

Et dans le cas de deux types identiques qui se suivent, pas besoin de
les ré-indiquer (cf ci-dessous).

Autre petite correction, il n’y a plus de DrumStaff puisque j’utilise
un contexte FiguredBass pour la tablature et un contexte ChordNames
pour les accords (d’ailleurs au passage, ça permet d’indiquer les
accords mineurs quand il y en a). C’est donc dans ces contextes-là
qu’on peut régler les instrumentName s’il y a lieu.

> Sur l'image jointe, on a l'illusion d'optique que les notes bleues sont
> plus petites que les cerclées rouges . Comment les augmenter un tout
> petit poil en taille et les déplacer un peu vers le bas pour corriger ce
> petit défaut.

J’ai corrigé pour que les chiffres entourés prennent exactement la
même place que les chiffres pas entourés (et je les grossis même un
peu).

Il y a même encore une dernière petite astuce qui permet d’avoir
encore moins à saisir : dans le cas de notation monodique assez
simple, comme ici, on peut tout simplement plaquer le rythme de la
mélodie sur celui des doigtés, ce qui évite d’avoir à saisir les
valeurs rythmiques dans la tablature.

Voici donc ce à quoi je parviens :

%%%%

\version "2.20.2"
%----------------------------------------

\header
{
  title = \markup {\column {"Bourrée des dindes"}}
  arranger = "Tablature diato Corgeron C/G"
  piece = "Bretagne"
}

t= \override FiguredBass.BassFigure.color = #darkred
p= \override FiguredBass.BassFigure.color = #darkblue
"g" = \override FiguredBass.BassFigureAlignment.padding = #2
"c" = \override FiguredBass.BassFigureAlignment.padding = #-2
tg={\t\g} pg={\p\g} tc={\t\c} pc={\p\c}

%---------------------------------------
global =
{
  \clef treble
  \time 2/4
  \tempo 4 = 120
  \key g \major
}

%----------------------------
LaVoix=
\relative c'
{\global
 \repeat volta 2{
   d4 e8 fis8
   g2
   a8. b16 c8 b8
   a8 g8 fis8 e8\break
   d4 e8 fis8 g2
   a8. b16 c8 b8 a2}\break
 \repeat volta 2{
   a8. b16 c8 b8 a8. b16 c8 b8
   a8 g8 fis8 e8 e4 d4\break
   a'8. b16 c8 b8 a8. b16 c8 b8
   a8 g8 fis8 a8 g2}
}

% ---------------------------
% \pg = poussé SOL, \pc = poussé DO, tg = tiré SOL, \tc = tiré DO
% \
TablatureDroite=
\figuremode {
  \pg <5> \t <5> \c <6>
  \pg <6>
  \tg <7> \c <6> \g <8> \c <6>
  \g <7> \p <6> \t <6> <5>
  \p <5> \t <5> \c <6> \pg <6>
  \t <7> \c <6> \g <8> \c <6>
  \g <7>
  <7> \c <6> \g <8> \c <6>
  \g <7> \c <6> \g <8> \c <6>
  \g <7> \p <6> \t <6> <5>
  <5> \p <5>
  \t <7> \c <6> \g <8> \c <6>
  \g <7> \c <6> \g <8> \c <6>
  \g <7> \p <6> \t <6> <7>
  \p <6>
}


%-------------------------------
% la note = basse, r symbolise l'accord (une valse se noterait g4 r r d4 r r..)
TablatureGauche = \chordmode {
  g4 r g r
  a:m r a:m r d r g r
  a:m r d r
  a:m r a:m r a:m r d g
  a:m r a:m r d r g2
}
%---------------------------------------

appliquerRhythme =
#(define-music-function (sequence cible) (ly:music? ly:music?)
   (define (flatten-music music)
     (let ((musiclist '()))
       (let loop ((music music))
         (let ((elt (ly:music-property music 'element))
               (elts (ly:music-property music 'elements)))
           (if (null? elt)
               (if (null? elts)
                   (set! musiclist (append musiclist (list music)))
                   (map! loop elts))
               (map! loop (list elt)))))
       (make-sequential-music musiclist)))
   (define (extract-durations music)
     (map (lambda (elem) (ly:music-property elem 'duration))
          (filter (music-type-predicate '(note-event))
                  (ly:music-property music 'elements))))
   (define (apply-duration element duration)
     (let ((subelements (ly:music-property element 'elements)))
       (if (null? subelements)
           (set! (ly:music-property element 'duration) duration))
       (map (lambda (subelement)
              (set! (ly:music-property subelement 'duration) duration))
            subelements)))
   (define (apply-durations durations music)
     (for-each apply-duration
               (filter (music-type-predicate '(rhythmic-event))
                       (ly:music-property music 'elements))
               (apply circular-list durations))
     music)
   (music-map (let ((i -1)
                    (ls (extract-durations
                         (flatten-music sequence))))
                (lambda (n)
                  (or (null? (ly:music-property n 'duration))
                      (begin
                       (set! i (1+ i))
                       (ly:music-set-property!
                        n 'duration
                        (list-ref ls i))))
                  n))
              cible))

%---------------------------------------

\score {
  \new StaffGroup <<
    \new Staff{
      \clef "G"
      \context Voice = "melodie" { \LaVoix}
    }
    \new FiguredBass \with {
      instrumentName = \markup{\column{\vspace #9 C G}}
    } \appliquerRhythme \LaVoix \TablatureDroite
    \new ChordNames \with {
      instrumentName = \markup{\column{MG " "}}
    } \TablatureGauche
  >>
  \layout {
    \context {
      \FiguredBass
      \consists Instrument_name_engraver
      \consists Staff_symbol_engraver
      \consists Bar_engraver
      \override StaffSymbol.line-count = 1
      \override StaffSymbol.line-positions =#'(-3)
      figuredBassFormatter =
      #(lambda (n ev ctx)
         (if (number? n)
             (number->string n)
             n))
      \override BassFigure.stencil =
      #(lambda (grob)
         (define (lists-equal a b)
           (let lp ((a a) (b b))
             (cond ((null? a) (null? b))
                   ((null? b) #f)
                   (else (and (= (car a) (car b))
                              (lp (cdr a) (cdr b)))))))
         (let* ((text (ly:grob-property grob 'text))
                (stencil (grob-interpret-markup
                          grob
                          (make-sans-markup text)))
                (color (ly:grob-property grob 'color))
                (circled-stencil (circle-stencil stencil .1 .5)))
           (if (lists-equal color darkred)
               circled-stencil
               (ly:stencil-outline
                (ly:stencil-scale stencil 1.1 1.1)
                circled-stencil))))
    }
    \context {
      \ChordNames
      \consists Instrument_name_engraver
      \consists Staff_symbol_engraver
      \consists Bar_engraver
      \override StaffSymbol.line-count = 1
      \override StaffSymbol.line-positions =#'(2)
      noChordSymbol = \markup \bold "/"
      \override ChordName.stencil =
      #(lambda (grob)
         (let* ((cause (ly:grob-property grob 'cause))
                (props (ly:prob-immutable-properties cause))
                (rest? (memq 'rest-event (assoc-get 'class props)))
                (stencil (ly:text-interface::print grob))
                (th .25))
           (if rest?
               stencil
               (ly:stencil-translate-axis
                (ly:stencil-scale
                 (circle-stencil
                  (stencil-whiteout-box stencil 1 360)
                  th (- th))
                 (- 1 th) (- 1 th))
                (/ th 2) Y))))
    }
    \context {
      \StaffGroup
      \override StaffGrouper.staff-staff-spacing =
      #'((basic-distance . 3)
         (minimum-distance . 0)
         (padding . 0))
    }

  }
  \midi {}
}

%%%%

V.



reply via email to

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