lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Marque d'avancement, I ou J


From: Gilles
Subject: Re: Marque d'avancement, I ou J
Date: Fri, 17 Apr 2015 19:43:57 +0200
User-agent: Opera Mail/12.17 (Win64)


De manière globale, ça marche bien (voir premier \score). Mais si on reporte
les graveurs de mark dans un contexte de voix, ça ne fonctionne plus,

Dans le fichier Lilypond "music-function-init.ly" la fonction \mark est définit de la manière suivante :

mark =
#(define-music-function
   (parser location label) ((scheme? '()))
  "Make the music for the \\mark command."
  (let* ((set (and (integer? label)
                   (context-spec-music (make-property-set 'rehearsalMark label)
                                      'Score)))
         (ev (make-music 'MarkEvent
                         'origin location)))

    (if set
        (make-sequential-music (list set ev))
        (begin
          (set! (ly:music-property ev 'label) label)
          ev))))

Il y a l'instruction
  (context-spec-music ...  'Score).
Il suffit de la changer par :
  (context-spec-music ...  'Staff)
en redefinissant une fonction appelée \markStaff par exemple :

%%%%%%%%%%%%%%
\version "2.18.2"
markStaff =
#(define-music-function
   (parser location label) ((scheme? '()))
  "Make the music for the \\mark command."
  (let* ((set (and (integer? label)
                   (context-spec-music (make-property-set 'rehearsalMark label)
                                      'Staff)))
         (ev (make-music 'MarkEvent
                         'origin location)))

    (if set
        (make-sequential-music (list set ev))
        (begin
          (set! (ly:music-property ev 'label) label)
          ev))))





musicA = \relative c'' {
  c1
  \mark \default
  \repeat unfold 8 {c1 \mark \default}
  c1
  %%\mark 11
  c1
}

musicB = \relative c'' {
  c1
  \mark \default
  \repeat unfold 8 {c1 \mark \default}
  c1
  \markStaff 11
  c1
}


staffMusic = \new Staff \with {
  \RemoveEmptyStaves
  \consists "Mark_engraver"
  \consists "Metronome_mark_engraver"
  \consists "Staff_collecting_engraver"
  markFormatter = #format-mark-box-alphabet
}
\musicB


\score { % mark_engraver reporté dans le contexte Staff
  <<
    \new StaffGroup
    <<
      \new GrandStaff
      <<
        \staffMusic
        \musicA
      >>
    >>
  >>
  \layout {
    \context {
      \Score
      \remove "Mark_engraver"
      \remove "Volta_engraver"
      \remove "Metronome_mark_engraver"
      \remove "Staff_collecting_engraver"
    }
  }
}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


--
Gilles



reply via email to

[Prev in Thread] Current Thread [Next in Thread]