Bonjour,
dans une partition à 4 voix j'ai 2 voix qui partent avant les 2 autres. J'aimerais pouvoir mettre un petit trait entre ces voix et la syllabe pour indiquer quand cette syllabe doit être chantée. Comment dessiner ce petit trait ?
cf. l'illustration où j'ai dessiné le trait désiré en rouge.
Merci de votre aide !
Bonjour,
faire le trait avec un markup.
on peut faire un eps moi j'avais fait ceci (eps joint) quand je faisais des partition chorale pour montrer qui avait le chant.
tip_chant.eps (973 Octets)
top_chant.eps (1017 Octets)
\version "2.25.16"
\paper { ragged-right = ##f }
\language "english"
top = ^\markup\translate #'(2 . -2) { "↗" }
paroles = \lyricmode { en pré -- sen -- ce }
\score {
<<
\new Lyrics = "haut" { s4 }
\new Staff <<
\new Voice = "sop" \relative c'' { \key d \major \voiceOne g'4 g a8 a4 a8 }
\new Voice = "bas" \relative c'' { \voiceTwo e4 e\top fs8 fs4 fs8 }
>>
\context Lyrics = "haut" \lyricsto "sop" \paroles
>>
}
cordialement
on peut aussi améliorer la flèche
\version "2.25.16"
\paper { ragged-right = ##f }
\language "english"
#(define-markup-command (arrow-at-angle layout props angle-deg length )
(number? number? )
(let* (
(PI-OVER-180 (/ (atan 1 1) 34))
(degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
(angle-rad (degrees->radians angle-deg))
(target-x (* length (cos angle-rad)))
(target-y (* length (sin angle-rad))))
(interpret-markup layout props
(markup
#:translate (cons (/ target-x 2) (/ target-y 2))
#:rotate angle-deg
#:translate (cons (/ length -2) 0)
#:concat (#:draw-line (cons length 0)
#:arrow-head X RIGHT #t)))))
%fleche position angle longueur
fleche = \markup \with-dimensions #'(0 . 0) #'(0 . 0) {
\translate #'(2 . -1)\arrow-at-angle #60 #5
}
paroles = \lyricmode { en pré -- sen -- ce }
\score {
<<
\new Lyrics = "haut" { s4 }
\new Staff <<
\new Voice = "sop" \relative c'' { \key d \major \voiceOne g'4 g a8 a4 a8 }
\new Voice = "bas" \relative c'' { \voiceTwo e4 e^\fleche fs8 fs4 fs8 }
>>
\context Lyrics = "haut" \lyricsto "sop" \paroles
>>
}
merci MartialR pour la solution \markup
. J'ai préféré y mettre une draw-line
plutôt qu'un caractère, ça me donne plus de souplesse pour orienter et alonger la ligne. Voilà le résultat.
question subsidiaire: cette méthode est compliquée parce que l'insertion d'un objet fait bouger l'espacement entre les lignes ! logique, mais j'aimerais éviter.
Comment faire pour que l'ajout de cet objet ne soit pas compté dans le calcul des espacements entre objets ?
merci pour ce bout de code très pratique !
voilà le résultat.