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

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

Re: doigté d'extension


From: Pierre Perol-Schneider
Subject: Re: doigté d'extension
Date: Thu, 18 Jun 2020 09:19:33 +0200

Ou tout simplement:

\relative do' { \clef bass sib4.-2 \extension do8-4[ 8] ré2-1 }

Cordialement,
Pierre

Le jeu. 18 juin 2020 à 00:54, Valentin Villenave <valentin@villenave.net> a écrit :
On 6/17/20, Jean Abou Samra <jean@abou-samra.fr> wrote:
> Si je puis me permettre d'ajouter mon grain de sel dans cette affaire,
> pourquoi pas une nouvelle voix plutôt que d'insérer le X dans la voix
> d'origine ?

Oui, c’est ce que j’ai essayé de faire dans mon nouveau code.

> extension =
> #(define-music-function (note) (ly:music?)
>    #{
>      <<

Attention, en partant avec << vous créez un nouveau contexte Voice --
du coup vous allez perdre tous les spanners en cours (Beam, Slur etc.)
et toutes les éventuelles modifications (\overrides,
context-properties telles que subdivideBeams, followVoice ou, dans le
cas qui nous occupe, fingeringOrientations.

>        {
>          $note
>        }
>        \new Voice \with {
>          midiMinimumVolume = 0
>          midiMaximumVolume = 0

Bien vu ! Je n’y pense jamais. Il y aurait aussi \remove
Note_performer qui revient au même (à moins que?).

>        } {
>          \voiceOne

Là aussi vous faites une supposition sur la position dans laquelle va
se trouver la $note.

>          %% J'espère n'avoir rien oublié mais si un objet venait à se
> “tripliquer”,
>          %% il faudrait simplement l'omettre en l'ajoutant à cette liste.

Dots, par exemple. Maintenant, je ne suis pas sûr que virer autant de
trucs soit ce qu’on cherche puisque précisément le but est de
reproduire l’alignement du doigté précédent. Personnellement j’ai viré
ce qui prendrait trop de place _horizontale_ : Flag et Dots.

>          % Pour le cas où la note porterait un TextScript, on le supprime.

Tout ce qui est attaché aux notes se trimballe dans 'articulations.

>          % Il faut ensuite rétablir le stencil du x.
>          \omit TextScript
>          \override NoteHead.stencil = #point-stencil
>          \override NoteHead.no-ledgers = ##t
>          \scaleDurations 1/2 {
>            $note
>            $note \tweak TextScript.stencil #ly:text-interface::print ^\x

Pas mal mais du coup ça ne respectera pas fingeringOrientations…

Ce que j’ai fait, de mon côté, est assez moche mais ça fonctionne
presque : d’abord je m‘insère dans la voix existante (avec \context)
pour garder tout les spanners et \overrides en cours, ensuite je crée
une voix (en lui donnant un identifiant unique pour être sûr qu’il n’y
aura pas d’effet de bord) avec simplement \hideNotes. Là où ça devient
vraiment crapoteux, c’est que pour récupérer l’état de la
context-property 'fingeringOrientations, je commence par la passer au
contexte parent (Staff), même s’il n’est pas fait pour ça (a priori ça
ne devrait pas avoir d’effet sur la suite des voix mais il vaut mieux
ne pas trop se poser la question) ; puis je récupère sa valeur dans ma
nouvelle voix temporaire. Ce n’est pas un modèle ; la solution bien
propre serait de définir un Scheme engraver.

V.


reply via email to

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