I think this got lost in the ether earlier in the week when the lists were down, but someone might find the attached solution helpful. It is good enough for my purposes. Grateful acknowledgments to Pierre Perol-Schneider, Frank Z., and Urs Liska, all of whom unknowingly helped with the solution.
-- Graham
On Wed, 2015-09-30 at 13:58 +0100, Graham King wrote:
> In transcribing a piece of renaissance music, I am trying to refine
> the following key signature:
>
> \version 2.19.21
> \relative c' {
> \set Staff.keyAlterations = #`(((-1 . 6) . ,NATURAL)
> (( 0 . 6) . ,FLAT))
> R1 b2 bes b' bes
> }
>
> Ideally, the flat in the key signature should have a ledger line, and
> should be vertically aligned with the natural sign. (There is a
> corresponding keysig in bass clef which also needs this alignment)
Oops, of course I meant that the _natural_ sign should have a ledger
line (in treble clef).
>
> I have looked at:
> 1) The re-writing of the key signature engraver in Scheme:
> https://lists.gnu.org/archive/html/lilypond-user/2015-08/msg00429.html
>
>
> 2) The addition of ledger lines to a key signature:
> https://lists.gnu.org/archive/html/lilypond-user/2014-11/msg00454.html
>
>
> 3) The Notation Reference
> http://lilypond.org/doc/v2.19/Documentation/notation/displaying-pitches#key-signature
> and the sections of the Internals Reference that this refers to;
>
> and I confess that I'm floundering a bit. Well, more than a bit.
>
> This specific issue is quite common in early music, where the composer
> uses the hard hexachord.
>
> Grateful for any help/guidance !
>
> -- Graham
>
> _______________________________________________
> lilypond-user mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/lilypond-user
\version "2.19.21"
%{
Print key signatures for transcriptions of early music in
which hard and soft hexachords are juxtaposed. In other
words, in the absence of accidentals, B is natural or flat
depending on its octave.
Acknowledgments to:
* Urs Liska
(http://lilypondblog.org/2014/03/music-functions-2-start-doing-something-useful/)
for drawing my attention to \temporary \override ... \revert.
* Pierre Perol-Schneider
(http://lists.gnu.org/archive/html/lilypond-user/2014-11/msg00454.html)
for the lambda function on which this code is based.
To do:
* This code is ripe for refactoring, but might be
easier to read in its present form. If refactored,
the interface could be something like:
\keysigBfaBmi "clef" "upperB" "lowerB" { ...music... }
where: clef := treble | bass
upperB := natural | flat
lowerB := natural | flat
* Add some error-checking.
%}
keysigBfaBmiTreble =
#(define-music-function (P L my-music)
(ly:music?)
#{
\set Staff.keyAlterations = #`(((-1 . 6) . ,NATURAL)
(( 0 . 6) . ,FLAT))
\set Staff.printKeyCancellation = ##f
\temporary \override Staff.KeySignature.stencil =
#(lambda (grob) (grob-interpret-markup grob
#{
\markup
\translate #'(0 . -3.5) {
\combine
\translate #'(0 . 3.5)
\musicglyph #"accidentals.flat"
\combine
\translate #'(-.4 . .5)
\override #'(thickness . 2)
\draw-line #'(1.5 . 0)
\musicglyph #"accidentals.natural"
}
#}))
#my-music
\revert Staff.KeySignature.stencil
#}
)
keysigBfaBmiBass =
#(define-music-function (P L my-music)
(ly:music?)
#{
\set Staff.keyAlterations = #`(((-2 . 6) . ,FLAT)
(( -1 . 6) . ,NATURAL))
\set Staff.printKeyCancellation = ##f
\temporary \override Staff.KeySignature.stencil =
#(lambda (grob) (grob-interpret-markup grob
#{
\markup
{
\combine
\translate #'(0 . -1)
\musicglyph #"accidentals.flat"
\translate #'(0 . 2.5)
\musicglyph #"accidentals.natural"
}
#}))
#my-music
\revert Staff.KeySignature.stencil
#}
)
keysigBfaBfaTreble =
#(define-music-function (P L my-music)
(ly:music?)
#{
\set Staff.keyAlterations = #`(((-1 . 6) . ,FLAT)
(( 0 . 6) . ,FLAT))
\set Staff.printKeyCancellation = ##f
\temporary \override Staff.KeySignature.stencil =
#(lambda (grob) (grob-interpret-markup grob
#{
\markup
\translate #'(0 . -3.5) {
\combine
\translate #'(0 . 3.5)
\musicglyph #"accidentals.flat"
\combine
\translate #'(-.4 . .5)
\override #'(thickness . 2)
\draw-line #'(1.5 . 0)
\musicglyph #"accidentals.flat"
}
#}))
#my-music
\revert Staff.KeySignature.stencil
#}
)
keysigBfaBfaBass =
#(define-music-function (P L my-music)
(ly:music?)
#{
\set Staff.keyAlterations = #`(((-2 . 6) . ,FLAT)
(( -1 . 6) . ,FLAT))
\set Staff.printKeyCancellation = ##f
\temporary \override Staff.KeySignature.stencil =
#(lambda (grob) (grob-interpret-markup grob
#{
\markup
{
\combine
\translate #'(0 . -1)
\musicglyph #"accidentals.flat"
\translate #'(0 . 2.5)
\musicglyph #"accidentals.flat"
}
#}))
#my-music
\revert Staff.KeySignature.stencil
#}
)
keysigBmiBmiTreble =
#(define-music-function (P L my-music)
(ly:music?)
#{
\set Staff.keyAlterations = #`(((-1 . 6) . ,NATURAL)
(( 0 . 6) . ,NATURAL))
\set Staff.printKeyCancellation = ##f
\temporary \override Staff.KeySignature.stencil =
#(lambda (grob) (grob-interpret-markup grob
#{
\markup
\translate #'(0 . -3.5) {
\combine
\translate #'(0 . 3.5)
\musicglyph #"accidentals.natural"
\combine
\translate #'(-.4 . .5)
\override #'(thickness . 2)
\draw-line #'(1.5 . 0)
\musicglyph #"accidentals.natural"
}
#}))
#my-music
\revert Staff.KeySignature.stencil
#}
)
keysigBmiBmiBass =
#(define-music-function (P L my-music)
(ly:music?)
#{
\set Staff.keyAlterations = #`(((-1 . 6) . ,NATURAL)
(( 0 . 6) . ,NATURAL))
\set Staff.printKeyCancellation = ##f
\temporary \override Staff.KeySignature.stencil =
#(lambda (grob) (grob-interpret-markup grob
#{
\markup
{
\combine
\translate #'(0 . -1)
\musicglyph #"accidentals.natural"
\translate #'(0 . 2.5)
\musicglyph #"accidentals.natural"
}
#}))
#my-music
\revert Staff.KeySignature.stencil
#}
)
% Test harness begins...
% N.B. Important to test:
% 1. Change of keysig;
% 2. Continuation of keysig onto new line;
% 3. Cancellation of keysig, and any residual effects.
%{ % begin block comment...
music = {
b,2 bes b' bes
\break
b,2 bes b' bes
}
\relative c'' {
\keysigBfaBmiTreble \music
\keysigBfaBfaTreble \music
\keysigBfaBmiTreble \music
\keysigBmiBmiTreble \music
\key f \major \music
\clef "bass"
\keysigBfaBmiBass { b,1 \music }
\keysigBfaBfaBass \music
\keysigBfaBmiBass \music
\keysigBmiBmiBass \music
\key f \major \music
}
\layout {
ragged-right = ##t
}
%}
% ... Test harness ends
BfaBmi_keysigs.pdf
Description: Adobe PDF document
_______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
