guidons pour le plaisir

Bonsoir à tous,
Je suis en train de graver une partition assez chargée, et à un endroit il y a des guidons (custodes) en même temps que des notes. J’ai pas encore élucidé ce que ça voulait dire (ça va venir quand j’aurai vu les autres parties, car c’est en parties séparées). Mais j’aimerais les mettre. Il doit y avoir un moyen ?
Exemple en pièce jointe.
Merci d’avance !
L.C.

guidons.png

C'est un peu compliqué. Admettons que le guidon est un Script, il faudrait que son objet side-support-elements ne contienne pas de hampe. Ceci est possible si tu crées un graveur (\Remove_stem_engraver, par exemple) qui supprime les hampes de la liste side-support-elements dans la méthode `finalize'.

Un peu de pseudocode...

#(define (do-filtering grob-array)
"Fonction qui enlève les hampes de cette liste")

#(define (is-guidon grob)
"Fonction qui détermine si un script est un guidon")

#(define (Remove_stem_engraver ctx)
(let ((scripts '()))
(make-engraver
(acknowledgers
((script-interface trans grob source)
;; whenever a Script is acknowledged,
;; add it to `scripts' list
(set! scripts (cons grob scripts))))
((finalize trans)
;; if any Script grobs exist,
;; remove stem as side support
(for-each (lambda (script)
(if (is-guidon script) (ly:grob-set-object! script 'side-support-elements (do-filtering (ly:get-object script 'side-support-elements)))))
scripts)
;; clear scripts ready for next timestep
(set! scripts '())))))

Pour voir comment créer un Scheme engraver, il y a :

http://lilypond.org/doc/v2.16/Documentation/snippets/contexts-and-engravers

Bien cordialement,
~Mike

···

On 13 mai 2013, at 00:40, Loïc Chahine <****@****> wrote:

Bonsoir à tous,
Je suis en train de graver une partition assez chargée, et à un endroit il y a des guidons (custodes) en même temps que des notes. J’ai pas encore élucidé ce que ça voulait dire (ça va venir quand j’aurai vu les autres parties, car c’est en parties séparées). Mais j’aimerais les mettre. Il doit y avoir un moyen ?
Exemple en pièce jointe.
Merci d’avance !
L.C.

Merci pour ta réponse, Mike !
Effectivement, ça m’a l’air plutôt compliqué. Je pense que ça ne doit pas être très important, dans la partition, ça doit donner des indications sur ce que jouent les autres, un truc du genre… Si vraiment je n’arrive pas à élucider le mystère, je chercherai à les reproduire. Si je trouve, j’essaierai de noter ça plus classiquement.
Bien cordialement,
L.C.

···

Le 13/05/13 10:57, ****@**** a écrit :

On 13 mai 2013, at 00:40, Loïc Chahine <****@**** > <mailto:****@****>> wrote:

Bonsoir à tous,
Je suis en train de graver une partition assez chargée, et à un endroit il y a des guidons (custodes) en même temps que des notes. J’ai pas encore élucidé ce que ça voulait dire (ça va venir quand j’aurai vu les autres parties, car c’est en parties séparées). Mais j’aimerais les mettre. Il doit y avoir un moyen ?
Exemple en pièce jointe.
Merci d’avance !
L.C.

C'est un peu compliqué. Admettons que le guidon est un Script, il faudrait que son objet side-support-elements ne contienne pas de hampe. Ceci est possible si tu crées un graveur (\Remove_stem_engraver, par exemple) qui supprime les hampes de la liste side-support-elements dans la méthode `finalize'.

Un peu de pseudocode...

#(define (do-filtering grob-array)
  "Fonction qui enlève les hampes de cette liste")

#(define (is-guidon grob)
  "Fonction qui détermine si un script est un guidon")

#(define (Remove_stem_engraver ctx)
  (let ((scripts '()))
    (make-engraver
     (acknowledgers
      ((script-interface trans grob source)
       ;; whenever a Script is acknowledged,
       ;; add it to `scripts' list
       (set! scripts (cons grob scripts))))
     ((finalize trans)
      ;; if any Script grobs exist,
      ;; remove stem as side support
      (for-each (lambda (script)
(if (is-guidon script) (ly:grob-set-object! script 'side-support-elements (do-filtering (ly:get-object script 'side-support-elements)))))
scripts)
      ;; clear scripts ready for next timestep
      (set! scripts '())))))

Pour voir comment créer un Scheme engraver, il y a :

http://lilypond.org/doc/v2.16/Documentation/snippets/contexts-and-engravers

Bien cordialement,
~Mike

Salut,

J'utilise cette petite fonction pour placer des guidons manuellement.
A voir si c'est utilisable dans ton cas.

custosNote =
#(define-music-function (parser location note) (ly:music?)
  (make-music 'SequentialMusic
   'elements (list #{
              \once \override Voice.NoteHead #'stencil = #ly:text-interface::print
              \once \override Voice.NoteHead #'text =
              #(markup #:null #:raise 0.0 #:musicglyph "custodes.mensural.u0")
              \once \override Voice.Flag #'stencil = ##f
              \once \override Voice.Stem #'stencil = ##f #}
              note)))

(il faudra probablement l'utiliser dans un contexte Voice à part des notes non-guidonnisées)

Nicolas

···

Le 12 mai 2013 à 23:40, Loïc Chahine <****@****> a écrit :

Bonsoir à tous,
Je suis en train de graver une partition assez chargée, et à un endroit il y a des guidons (custodes) en même temps que des notes. J’ai pas encore élucidé ce que ça voulait dire (ça va venir quand j’aurai vu les autres parties, car c’est en parties séparées). Mais j’aimerais les mettre. Il doit y avoir un moyen ?
Exemple en pièce jointe.
Merci d’avance !
L.C.