[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
}