[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn
From: |
Ya Gloops |
Subject: |
Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn |
Date: |
Tue, 21 Mar 2023 08:46:25 +0000 (UTC) |
Magnifique Jean !!!
Toute ma gratitude…
Gilles
Le mardi 21 mars 2023 à 09:11:04 UTC+1, Jean Abou Samra <jean@abou-samra.fr> a
écrit :
Le lundi 20 mars 2023 à 23:48 +0000, Ya Gloops a écrit :
>
> C'est exactement ça !, c'est génial… Bravo Jean
> Pour une question pratique, y a-t-il un moyen, en gardant exactement ce
> résultat, d'éviter d'avoir à modifier \key ?
>
> C'est-à-dire appliquer le context automatiquement ...
> J'ai essayé ça mais ça plante
>
> key =
> #(define-music-function (pitch mode) (ly:pitch? number-pair-list?)
> #{
> \key #pitch #mode
> \context Staff \applyContext
> #(lambda (context)
> (ly:context-set-property! context 'keyAlterations '()))
> #})
>
> \relative c' {
> \easyHeadsOn
> \key fis \major
> fis gis ais b cisis d eis fis e eis fis
> }
>
Normal : comme tu redéfinis la fonction \key, le \key qui se trouve à
l'intérieur n'est pas un appel à la fonction \key de LilyPond mais à la
nouvelle fonction. Donc cette fonction s'appelle elle-même, à l'infini, ou plus
exactement jusqu'à ce que l'espace alloué à la « pile d'appels » (là où la
liste des fonctions qui sont en train d'être exécutées est stockée, de manière
simplifiée) soit épuisé et que crash s'ensuive. Si tu veux le faire de cette
manière, il faut d'abord mettre la fonction \key de LilyPond dans une variable,
avec keyDefault = \key \etc ou keyDefault = #key, puis utiliser \defaultKey
dans la fonction. Cela dit, en fait on peut s'en passer :
\version "2.24.1"
#(define Ez_numbers_engraver
(make-engraver
(acknowledgers
((note-head-interface engraver grob source-engraver)
(let* ((context (ly:translator-context engraver))
(tonic-pitch (ly:context-property context 'tonic))
(tonic-name (ly:pitch-notename tonic-pitch))
(grob-pitch
(ly:event-property (event-cause grob) 'pitch))
(grob-name (ly:pitch-notename grob-pitch))
(delta (modulo (- grob-name tonic-name) 7))
(note-names
(make-vector 7 (number->string (1+ delta)))))
(ly:grob-set-property! grob 'note-names note-names))))))
#(define (Relative_alterations_engraver context)
(let ((note-events '()))
(make-engraver
(listeners
((note-event engraver event)
(set! note-events (cons event note-events))))
((pre-process-music engraver)
(let ((tonic (ly:context-property context 'tonic)))
(for-each
(lambda (ev)
(let* ((pitch (ly:event-property ev 'pitch))
(octave (ly:pitch-octave pitch))
(notename (ly:pitch-notename pitch))
(rel-pitch (ly:pitch-diff pitch tonic))
(rel-alt (ly:pitch-alteration rel-pitch)))
(ly:event-set-property!
ev 'pitch
(ly:make-pitch octave notename rel-alt))))
note-events)
(set! note-events '()))))))
#(define (No_key_alterations_engraver context)
(make-engraver
((pre-process-music engraver)
(ly:context-set-property! context 'keyAlterations '()))))
\layout {
ragged-right = ##t
\context {
\Voice
\consists \Ez_numbers_engraver
\consists \Relative_alterations_engraver
}
\context {
\Staff
\consists \No_key_alterations_engraver
}
}
\relative c' {
\easyHeadsOn
\key c \major
c d e f gis as b c
}
\relative c' {
\easyHeadsOn
\key fis \major
fis gis ais b cisis d eis fis
}
\relative c' {
\easyHeadsOn
\key ges \major
ges' as bes ces d eses f ges
}
Cordialement,
Jean
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, (continued)
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Vincent Gay, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Ya Gloops, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Vincent Gay, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Ya Gloops, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Jean Abou Samra, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Ya Gloops, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Ya Gloops, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Jean Abou Samra, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Ya Gloops, 2023/03/20
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Jean Abou Samra, 2023/03/21
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn,
Ya Gloops <=
- Re: Altérations dièse ou bémol au lieu de bécarre avec easyHeadsOn, Ya Gloops, 2023/03/22