Subject: transposition des noms d'accords et principe de la moindre altération

From: Vincent Gay <[email-masked]>
Date: Sat, 22 Jan 2022 17:11:50 +0100

Bonsoir à toutes et à tous

soit la suite d'accords
G♯m7 C♯7 F♯Δ

si je la transpose pour un instrument en mi♭ (\transpose c a) j'obtiens :
E#m7 A#7 D♯Δ

c'est pas très intuitif pour un musicien moyen. J'aurais évidemment 
préféré (principe de la moindre altération) :
Fm7 b♭7 E♭Δ

j'ai bien essayé \transpose gis bes, ça fonctionne sur la séquence mais 
je ne vous raconte pas le résultat sur les accords ordinaires du reste 
de la pièce.

j'aurai pu remplacer la séquence originelle par
A♭m7 G♭7 G♭Δ
mais allez savoir pourquoi le guitariste et le pianiste ne sont pas 
d'accord...

existe-t-il une solution plus élégante que de dupliquer ma variable 
contenant les noms d'accords ?

un petit bout de code :

theNotes = { \repeat unfold 6 { R1 } }
theChords = \chordmode { gis1:m7 cis:7 fis:7+ g:m7 c:7 f:7+}

\score {
   <<
     \new ChordNames \theChords
     \new Staff \theNotes
   >>
}

\score {
   <<
     \new ChordNames \transpose c a \theChords
     \new Staff \theNotes
   >>
}

-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 22 Jan 2022 18:42:35 +0100

Le 22/01/2022 à 17:11, Vincent Gay a écrit :
> j'ai bien essayé \transpose gis bes, ça fonctionne sur la séquence 
> mais je ne vous raconte pas le résultat sur les accords ordinaires du 
> reste de la pièce.
>
> [...]

Oui, avec la propriété chordRootNamer, qui définit la
manière dont s'affiche la note principale. Par défaut,
c'est note-name->markup. On peut la changer pour
qu'elle change la note en une enharmonique plus naturelle
avant de la passer à note-name->markup.

\version "2.22.1"

#(use-modules (ice-9 match))

#(define enharmonization
    #((0 . 0) ; C♮
      (0 . 1/2) ; D♭ → C ♯
      (1 . 0) ; D♮
      (2 . -1/2) ; D♯ → E♭
      (2 . 0) ; E♮
      (3 . 0) ; F♮
      (3 . -1/2) ; G♭ → F♯
      (4 . 0) ; G♮
      #f ; G♯/A♭
      (5 . 0) ; A♮
      (6 . -1/2) ; A♯ → B♭
      (6 . 0) ; B♮
      ))

#(define (enharmonize pitch)
    (let* ((semitones (ly:pitch-semitones pitch))
           (normalized-semitones (modulo semitones 12))
           (eventual-octave (* 1/12 (- semitones normalized-semitones))))
      (match (vector-ref enharmonization normalized-semitones)
       ((best-name . best-alteration)
          (ly:make-pitch eventual-octave best-name best-alteration))
       (#f
          ;; G♯/A♭
          (if (positive? (ly:pitch-alteration pitch))
              (ly:make-pitch eventual-octave 4 1/2)
              (ly:make-pitch eventual-octave 5 -1/2))))))

%% Tests
#(for-each
   (match-lambda
    ((input output)
      (let ((processed (enharmonize input)))
        (if (not (equal? output (enharmonize input)))
            (ly:error "~s -> ~s: bad output, expected ~s" input 
processed output)))))
   `((,#{ c #} ,#{ c #})
     (,#{ cis #} ,#{ cis #})
     (,#{ des #} ,#{ cis #})
     (,#{ des'' #} ,#{ cis'' #})
     (,#{ bisis #} ,#{ cis' #})
     (,#{ eeses #} ,#{ d #})
     (,#{ gis,, #} ,#{ gis,, #})
     (,#{ aes,, #} ,#{ aes,, #})
     (,#{ fisis,, #} ,#{ g,, #})))

\layout {
   \context {
     \ChordNames
     chordRootNamer =
       #(lambda (pitch lowercase)
          (note-name->markup (enharmonize pitch)
                             lowercase))
   }
}

\score {
   <<

\score {
   <<

Bien cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Sat, 22 Jan 2022 19:20:37 +0100

Le 22/01/2022 à 18:42, Jean Abou Samra a écrit :
> manière dont s'affiche la note principale. 

Remarquable !

Tu aimes les chocolats Jean ? Tu m'as dis ne pas boire d'alcool mais 
avec tout ce que je te dois... Catherine, mon épouse, fait de 
délicieuses truffes en chocolat.

---

From: Jacques Menu <[email-masked]>
Date: Sun, 23 Jan 2022 12:53:27 +0100

Peut-on faire de la télé-dégustation de truffes?

JM

> Le 22 janv. 2022 à 19:20, Vincent Gay <[email-masked]> a écrit :
> 
> Tu aimes les chocolats Jean ? Tu m'as dis ne pas boire d'alcool mais avec tout ce que je te dois... Catherine, mon épouse, fait de délicieuses truffes en chocolat.
> 
> -- 
> Vincent Gay