Subject: Saisie des notes dans les tonalités chargées en # ou en b ?

From: Monteverdi <[email-masked]>
Date: Fri, 25 Jan 2019 05:23:15 -0700 (MST)

Existe-t-il une facilité de saisie des notes dans les tonalités chargées en #
ou en b qui éviterait de devoir saisir systématiquement les altérations qui
figurent déjà dans l'armure de la tonalité ?

Je comprends bien que le compilateur de Lilypond attend que le code source
contienne les vraies notes quelle que soit l'armure, mais il devrait être
possible d'implémenter 2 solutions :

• soit au niveau du compilateur de Lilypond (la meilleure)

une instruction placée dans le code source, p.ex. \key_signature <nom de la
tonalité> indiquerait au compilateur qu'il doit interpréter une note placée
après cette instruction dans le code source en lui ajoutant automatiquement
l'altération donnée par l'armure avant de la compiler (en tenant compte des
altérations accidentelles ; pour cela il faudrait créer un suffixe indiquant
un bécarre, p.ex. "n" pour naturel, les autres altérations accidentelles
étant interprétées de manière absolue, c.à.d sans tenir compte de l'armure)

exemple :

\key_signature ees \major
{ e g b bn g a fis f e } % le "n" qui suit le "b" indique un bécarre

serait interprété comme :

{ ees g bes b g aes fis f ees }

• soit au niveau de l'éditeur Frescobaldi

ce serait Frescobaldi qui traduirait automatiquement le code source
introduit par l'utilisateur sans les altérations de l'armure au moment de le
transmettre à Lilypond pour compilation (de manière transparente pour
l'utilisateur)

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: Monteverdi <[email-masked]>
Date: Fri, 25 Jan 2019 06:20:36 -0700 (MST)

L'algorithme serait même très simple :

• initialiser la liste des notes altérées par l’armure
% nécessaire pour le cas où le code ne comporte aucune instruction
\key-signature

• quand on rencontre une instruction \key-signature :

réinitialiser la liste des notes altérées par l’armure
ajouter dans la liste l’altération (# ou b) et les notes à altérer

• quand on rencontre une note :

la note du code source comporte-t-elle un suffixe d'altération?
si oui (
	le suffixe est-il un bécarre ?
	si oui (enlever le suffixe puis la transmettre au compilateur)
	sinon (la transmettre telle quelle au compilateur)
) 
sinon (
	la note figure-t-elle dans la liste des notes altérées par l'armure ?
	si oui (lui ajouter l'altération de l'armure puis la transmettre au
compilateur)
	sinon (la transmettre telle quelle au compilateur)
)

C'est peut-être un peu plus compliqué au niveau de la gestion de l'armure à
cause des doubles # ou b, mais le principe reste le même.

---

From: Christophe Pochon <[email-masked]>
Date: Fri, 25 Jan 2019 14:58:05 +0100

Bonjour,

Et comment feriez-vous si au lieu d'un bécarre, c'est un dièse ou un bémol
"accidentel" qui survient ?

Christophe Pochon

Le ven. 25 janv. 2019 à 14:20, Monteverdi <[email-masked]> a écrit :

> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: Monteverdi <[email-masked]>
Date: Fri, 25 Jan 2019 07:04:00 -0700 (MST)

==================================
CE POST ANNULE ET REMPLACE LE POST PRECEDENT
==================================

L'algorithme serait très simple .

Il se baserait sur une liste de substitution formée de paires [note lue,
note à compiler]

Exemple : 

En Do majeur : ([c,c] , [d,d] , [e,e] , [f,f] , [g,g] , [a,a] , [b,b])
En Ré majeur : ([c,cis] , [d,d] , [e,e] , [f,fis] , [g,g] , [a,a] , [b,b])
En La b majeur ([c,c] , [d,des] , [e,ees] , [f,f] , [g,g] , [a,aes] ,
[b,bes])

Algorithme :

• initialiser la liste en Do majeur
 % pour le cas où le code ne comporte aucune instruction \key-signature

réinitialiser la liste selon la tonalité

sinon (transmettre au compilateur la note à compiler donnée par la liste de
substitution)

---

From: Monteverdi <[email-masked]>
Date: Fri, 25 Jan 2019 07:10:36 -0700 (MST)

>> "Et comment feriez-vous si au lieu d'un bécarre, c'est un dièse ou un
bémol "accidentel" qui survient ?"

Relisez bien mon 1er post :

"[...] un bécarre, p.ex. "n" pour naturel, les autres altérations
accidentelles étant interprétées de manière absolue, c.à.d sans tenir compte
de l'armure"

ainsi que l'algo :

"le suffixe est-il un bécarre ?
si oui (enlever le suffixe puis la transmettre au compilateur)
sinon (la transmettre telle quelle au compilateur)"

---

From: Monteverdi <[email-masked]>
Date: Fri, 25 Jan 2019 07:29:40 -0700 (MST)

On peut encore simplifier l'algorithme indiqué dans mon 2e post :

=======================
ANNULE ET REMPLACE LE 2E POST
=======================

► L'algorithme :

Il se base sur une liste de substitution formée de paires (note lue, note à
compiler)

Exemple : 

En Ut maj ou en l'absence de \Key_signature : ([c,c] , [d,d] , [e,e] , [f,f]
, [g,g] , [a,a] , [b,b])
En Ré majeur : ([c,cis] , [d,d] , [e,e] , [f,fis] , [g,g] , [a,a] , [b,b])
En La b majeur ([c,c] , [d,des] , [e,ees] , [f,f] , [g,g] , [a,aes] ,
[b,bes])

Algorithme :

• initialiser la liste

• quand on rencontre une instruction \key-signature <tonalité> :
réinitialiser la liste selon la tonalité

si oui (
	le suffixe est-il un bécarre ?
	si oui (enlever le suffixe puis transmettre la note au compilateur)
	sinon (la transmettre telle quelle au compilateur
)

---

From: Valentin Villenave <[email-masked]>
Date: Fri, 25 Jan 2019 23:02:07 +0000

> "accidentel" qui survient ?

On peut tout faire évidemment… Mais bon, c’est moche.

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

\version "2.19.82" % obligatoire (pas 2.18)

sloppy =
#(define-music-function (music) (ly:music?)
   (let ((alts '()))
     #{ \applyContext
        #(lambda (c)
           (set! alts
                 (ly:context-property c 'keyAlterations))
           (music-map
            (lambda (m)
              (let ((p (ly:music-property m 'pitch))
                    (force (ly:music-property m 'force-accidental)))
                (if (and
                     (not (eq? force #t))
                     (not (null? p)))
                    (let* ((note (ly:pitch-notename p))
                           (alt (ly:assoc-get note alts)))
                      (if alt
                          (ly:music-set-property! m 'pitch
                            (ly:make-pitch
                             (ly:pitch-octave p)
                             note
                             alt)))))
                m))
            music))
        #music
     #}))

{\key es \major
 \sloppy {
   bes1  b!1 c' b' cis' e''
 }
}

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

V.

---

From: Olivier Miakinen <[email-masked]>
Date: Sat, 26 Jan 2019 00:43:53 +0100

> figurent déjà dans l'armure de la tonalité ?

Dans Frescobaldi, il y a un outil qui te permet de faire ça.

Prenons cette partition en exemple :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"
\language "italiano"

global = {
  \key do \major
}

\relative do' {
  \global
  do4 re mi fa sol la si do
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Outils > Hauteurs > Changement de mode
 Tonalité : do
 Mode : Minor (natural)

Résultat :
  do4 re mib fa sol lab sib do

Outils > Hauteurs > Changement de mode
 Tonalité : sol
 Mode : Major

Résultat :
  do4 re mi fad sol la si do

---

From: Monteverdi <[email-masked]>
Date: Sun, 27 Jan 2019 06:54:40 -0700 (MST)

Olivier Miakinen-3 wrote
> Outils > Hauteurs > Changement de mode

Merci beaucoup pour cette information !

Ce n'est pas l'outil parfait (ça ne gère pas bien les altérations
accidentelles), mais c'est une aide appréciable.