lilypond-user
[Top][All Lists]
Advanced

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

Re: Double clef (canon)


From: Thomas Morley
Subject: Re: Double clef (canon)
Date: Fri, 10 Oct 2014 22:45:01 +0200

2014-10-10 18:07 GMT+02:00 Jayaratna <address@hidden>:
> Dear Harm,
>
> yes, there is a breve rest after the first clef in the first line. It means
> the part with that clef have to wait one breve, while the part following the
> second clef starts first.
> Actually that rest is the reason why I did not choose to just make a new
> clef with a \markup \concat glyph.
>
> Thank you,
> Andrea



Maybe the code below, still spacing-issues because of the BarLines, though.
Several comments inline.

HTH,
  Harm



\version "2.19.13"

\paper {
    %% only set for the tiny example:
    line-width = 65
    indent = 0
}
\layout {
    \omit Score.BarNumber
    \context {
      \MensuralStaff

      %% The following two commands are needed, if the BreathingSign
      %% is used/hacked
      \override TimeSignature.space-alist =
            #'((cue-clef extra-space . 1.5)
               (first-note fixed-space . 2.0)
               (custos fixed-space . 1)
               (right-edge extra-space . 0.5)
               (staff-bar extra-space . 1.0))

         \override BreathingSign.space-alist =
          #'((time-signature minimum-space . 2.5))

      %% in MensuralStaff the BarLines are made transparent,
      %% causing some unequal spacing, though even omitting the
      %% stencil does not work sufficient.
      %% No clue to workaround atm
      \omit BarLine

      %% pity the following does not work
      %%\override Clef.style = #'mensural
    }
    %% Aren't the Dots much too heavy for mensural-style?
    %% The following does not work, because of the missing glyph
    %\override Dots.style = #'mensural
    %% Instead:
    \override MensuralVoice.Dots.style = #'vaticana
}

#(define add-same-clef
;; adds the default-clef to the right, one staff-space lower
;; one staff-space is added to the right of the added clef
(lambda (grob)
  (let* ((stil (ly:clef::print grob))
         (staff-space (ly:staff-symbol-staff-space grob))
         (new-clef-to-add
           (ly:stencil-translate-axis
             stil
             (- staff-space)
             Y))
         (new-clef-x-ext
           (ly:stencil-extent new-clef-to-add X))
         (new-clef-y-ext
           (ly:stencil-extent new-clef-to-add Y))
         (new-clef-with-more-right-space
           (ly:make-stencil
             (ly:stencil-expr new-clef-to-add)
             (cons
               (car new-clef-x-ext)
               (+ staff-space (cdr new-clef-x-ext)))
             new-clef-y-ext)))
  (ly:stencil-combine-at-edge
    stil
    X
    RIGHT
    new-clef-with-more-right-space
    staff-space))))

#(define soprano-for-breathe
  (lambda (grob)
    (let* ((staff-space (ly:staff-symbol-staff-space grob)))
    (ly:grob-set-property! grob 'Y-offset (- (* 2 staff-space)))
    (grob-interpret-markup grob
      (markup #:musicglyph "clefs.mensural.c")))))

insert-non-functional-soprano-clef-mid-line = {
  %% BreathingSign is hacked, to insert a clef
  %% only works sufficient at mid-line
  \override BreathingSign.stencil = #soprano-for-breathe
  \breathe
}

\new MensuralStaff
\new MensuralVoice
\relative c' {
    \once \omit Staff.TimeSignature
    \clef "mensural-c2"
    \compressFullBarRests
    \omit MultiMeasureRestNumber
    \once \override MultiMeasureRest.staff-position = #-2
    R\breve
    \time 4/4

%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Solution 1 (via BreathingSign)
%%%%%%%%%%%%%%%%%%%%%%%%%%

    \insert-non-functional-soprano-clef-mid-line

%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Solution 2 (via \grace )
%%%%%%%%%%%%%%%%%%%%%%%%%%

%    \override  Staff.Clef.full-size-change = ##t
%    \clef "mensural-c1"
%    %% hmmm, causing too much space?
%    \grace s4
%    \once \omit Staff.Clef
%    \clef "mensural-c2"


    c1 d2 b c2. d4 e2 s2 %% to be continued
    \override Staff.Clef.stencil = #add-same-clef
    \break
    f4 g a f g a b a %% to be continued
    \break
    b a g f e2 d2. e4 f g %% to be continued
}



reply via email to

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