[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.
- markup avec cercle plein (circle fill), Gerard, 2020/05/03
- Re: markup avec cercle plein (circle fill), Valentin Villenave, 2020/05/03
- Re: markup avec cercle plein (circle fill), survoje, 2020/05/03
- Re: markup avec cercle plein (circle fill), Valentin Villenave, 2020/05/03
- Re: markup avec cercle plein (circle fill), survoje, 2020/05/03
- Re: markup avec cercle plein (circle fill), Valentin Villenave, 2020/05/03
- Re: markup avec cercle plein (circle fill), survoje, 2020/05/03
- Re: markup avec cercle plein (circle fill),
Valentin Villenave <=
- Re: markup avec cercle plein (circle fill), Gerard, 2020/05/04