Subject: Fonction scheme pour mordant explicite

From: Simon Froger <[email-masked]>
Date: Wed, 13 Jul 2016 00:18:19 +0200

Bonjour.

Je suis en train de bricoler une fonction scheme pour automatiser 
l'écriture d'un mordant explicite : le principe consiste à extraire le 
pitch de la note sur laquelle s'applique la fonction, de créer une 
petite note avec ce même pitch, suivie d'une autre petite note 1 ton 
plus haut.

Problème : ça marche quand les deux notes sont séparées d'un ton, mais 
lorsqu'elles sont séparées d'un demi-ton, ça met des altérations non 
désirées... Il faudrait donc transposer non pas d'un ton, mais d'un 
degré dans l'échelle du morceau. Comment faire ?

Mon exemple :

\version "2.18.2"
\language "english"

mord = #(define-music-function (parser location myNote)
             (ly:music?)
             (define myGnote
                 (make-music 'NoteEvent
                     'duration (ly:make-duration 5 0)
                     'pitch (ly:music-property myNote 'pitch)
                 )
             )
             (define myOtherGnote
                 (make-music 'NoteEvent
                     'duration (ly:make-duration 5 0)
                     'pitch (ly:pitch-transpose
                             (ly:music-property myNote 'pitch) 
(ly:make-pitch 0 1 0))
                 )
             )
             #{
                 \acciaccatura {
                     #myGnote
                     #myOtherGnote
                 }
                 #myNote
             #}
         )

{
     \key c \minor
     \mord c'4 \mord d' ef'
}

---

From: Christophe Pochon <[email-masked]>
Date: Wed, 13 Jul 2016 04:35:31 +0200

Bonjour !

Je ne comprends pas très bien. Tu voudrais que ta fonction s'adapte
automatiquement à la tonalité et devine ainsi quand la deuxième note doit
être un ton ou un demi-ton en-dessus de la première ?

Christophe

Christophe Pochon
http://www.christophe-pochon.com

Le 13 juillet 2016 à 00:18, Simon Froger <[email-masked]> a
écrit :

> pitch de la note sur laquelle s'applique la fonction, de créer une petite
> note avec ce même pitch, suivie d'une autre petite note 1 ton plus haut.
>
> désirées... Il faudrait donc transposer non pas d'un ton, mais d'un degré
> dans l'échelle du morceau. Comment faire ?
>
> Mon exemple :
>
> \version "2.18.2"
> \language "english"
>
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: Simon Froger <[email-masked]>
Date: Wed, 13 Jul 2016 11:40:27 +0200

Oui, c'est bien ça... Ou alors faire en sorte qu'aucune altération 
n'apparaisse sur les petites notes ou après...

Le 13/07/2016 04:35, Christophe Pochon a écrit :
> automatiquement à la tonalité et devine ainsi quand la deuxième note 
> doit être un ton ou un demi-ton en-dessus de la première ?
>
>
> Christophe
>
> Christophe Pochon
> Le 13 juillet 2016 à 00:18, Simon Froger <[email-masked] 
> <mailto:[email-masked]>> a écrit :
>
>     Bonjour.
>
>     l'écriture d'un mordant explicite : le principe consiste à
>     extraire le pitch de la note sur laquelle s'applique la fonction,
>     de créer une petite note avec ce même pitch, suivie d'une autre
>     petite note 1 ton plus haut.
>
>     Problème : ça marche quand les deux notes sont séparées d'un ton,
>     mais lorsqu'elles sont séparées d'un demi-ton, ça met des
>     altérations non désirées... Il faudrait donc transposer non pas
>     d'un ton, mais d'un degré dans l'échelle du morceau. Comment faire ?
>
>     Mon exemple :
>
>     \version "2.18.2"
>     \language "english"
>
>     [email-masked] <mailto:[email-masked]>

---

From: Christophe Pochon <[email-masked]>
Date: Wed, 13 Jul 2016 12:46:38 +0200

Ok.

Une piste peut-être, en regardant comment est écrite la fonction
modalTranspose ?

Christophe Pochon

Le 13 juillet 2016 à 11:40, Simon Froger <[email-masked]> a

---

From: Christophe Pochon <[email-masked]>
Date: Wed, 13 Jul 2016 16:57:15 +0200

Ou peut-être que le plus simple serait de créer deux fonctions : \mord pour
les mordant d'un ton et \mordH pour les mordant d'un demi-ton, par exemple
ainsi :

\version "2.18.2"
\language "english"

mordH = #(define-music-function (parser location myNote)
            (ly:music?)
            (define myGnote
                (make-music 'NoteEvent
                    'duration (ly:make-duration 5 0)
                    'pitch (ly:music-property myNote 'pitch)
                )
            )
            (define myOtherGnote
                (make-music 'NoteEvent
                    'duration (ly:make-duration 5 0)
                    'pitch (ly:pitch-transpose
                            (ly:music-property myNote 'pitch)
(ly:make-pitch 0 1 FLAT))
                )
            )
            #{
                \acciaccatura {
                    #myGnote
                    #myOtherGnote
                }
                #myNote
            #}
        )

{
    \key c \minor
    \mord c'4 \mordH d' ef'
}

Christophe Pochon