Paul,

Thank you.

 
Blessing in+,
Ming.


>________________________________
> From: Paul Morris <p...@paulwmorris.com>
>To: MING TSANG <tsan...@rogers.com> 
>Cc: lilypond-usermailinglist <lilypond-user@gnu.org> 
>Sent: Wednesday, November 14, 2012 12:13:44 AM
>Subject: Re: Custom key signature stencils, differentiating major and minor 
>keys
> 
>
>Hi Ming,  I took another look at this and since there's only one key signature 
>where the accidentals do not extend above the staff (F major / D minor) I just 
>added extra padding for those keys.  Now the key names always appear above the 
>staff, regardless of the clef.  
>
>
>The sizing of the accidental signs in the key names is better in this version 
>as well.
>
>
>Cheers,
>-Paul
>
>
>
>
>\version "2.16.0"
>
>
>% tonic-semi: semitone of tonic note, 0-11, 0=C, 2=D, etc
>% psn: vertical staff position of the last accidental sign in key signature
>% accsign: the accidental sign type, 1/2=sharp, -1/2=flat
>% Knowing these 3 things is enough to identify the key and whether it is 
>major/minor
>% txt-size: size of key name text
>% padd: padding between key signature and key name
>% F Major and D Minor get extra padding to clear the staff
>% It does not handle modal keys correctly (dorian, lydian, etc.)
>
>
>#(define Custom_key_sig_engraver
>   (make-engraver
>    (acknowledgers
>     ((key-signature-interface engraver grob source-engraver)
>      (let* (
>(context   (ly:translator-context engraver))
>    (tonic-pitch  (ly:context-property context 'tonic))
>    (tonic-semi   (modulo (ly:pitch-semitones tonic-pitch) 12)) 
>(acclist    (ly:grob-property grob 'alteration-alist))
>(accsign    (if (null? acclist) 0 (cdr (list-ref acclist 0)))) 
>(psn  (if (null? acclist) 0 (car (list-ref acclist 0)))) 
>(key-name   #{ \markup {} #})
>(txt-size  .7)
>(padd.5)
>  )
>  (cond 
>  ((= accsign 0) (cond
>((= tonic-semi 0) (set! key-name #{ \markup {C Major} #}) (set! padd 3.2))
>((= tonic-semi 9) (set! key-name #{ \markup {A Minor} #}) (set! padd 3.2))
>(else (set! key-name #{\markup{}#}))
>))
>  ((= accsign 1/2)
>(cond 
>((= psn 3) (cond 
>((= tonic-semi 7) (set! key-name #{ \markup {G Major} #}))
>((= tonic-semi 4) (set! key-name #{ \markup {E Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 0) (cond
>((= tonic-semi 2)  (set! key-name #{ \markup {D Major} #}))
>((= tonic-semi 11) (set! key-name #{ \markup {B Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 4) (cond 
>((= tonic-semi 9) (set! key-name #{ \markup {A Major} #}))
>((= tonic-semi 6) (set! key-name #{ \markup {F\raise #.8 \magnify #.8 {\sharp} 
>Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 1) (cond 
>((= tonic-semi 4) (set! key-name #{ \markup {E Major} #}))
>((= tonic-semi 1) (set! key-name #{ \markup {C\raise #.8 \magnify #.8 {\sharp} 
>Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 5) (cond 
>((= tonic-semi 11) (set! key-name #{ \markup {B Major} #}))
>((= tonic-semi 8)  (set! key-name #{ \markup {G\raise #.8 \magnify #.8 
>{\sharp} Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 2) (cond
>((= tonic-semi 6) (set! key-name #{ \markup {F\raise #.8 \magnify #.8 {\sharp} 
>Major} #}))
>((= tonic-semi 3) (set! key-name #{ \markup {D\raise #.8 \magnify #.8 {\sharp} 
>Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 6) (cond
>((= tonic-semi 1)  (set! key-name #{ \markup {C\raise #.8 \magnify #.8 
>{\sharp} Major} #}))
>((= tonic-semi 10) (set! key-name #{ \markup {A\raise #.8 \magnify #.8 
>{\sharp} Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>)
>  )
>  ((= accsign -1/2)
>(cond
>((= psn 6) (cond
>((= tonic-semi 5) (set! key-name #{ \markup {F Major} #}) (set! padd 1.4))
>((= tonic-semi 2) (set! key-name #{ \markup {D Minor} #}) (set! padd 1.7))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 2) (cond
>((= tonic-semi 10) (set! key-name #{ \markup {B\raise #.4 \magnify #.8 {\flat} 
>Major} #}))
>((= tonic-semi 7)  (set! key-name #{ \markup {G Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 5) (cond
>((= tonic-semi 3) (set! key-name #{ \markup {E\raise #.4 \magnify #.8 {\flat} 
>Major} #}))
>((= tonic-semi 0) (set! key-name #{ \markup {C Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 1) (cond
>((= tonic-semi 8) (set! key-name #{ \markup {A\raise #.4 \magnify #.8 {\flat} 
>Major} #}))
>((= tonic-semi 5) (set! key-name #{ \markup {F Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 4) (cond
>((= tonic-semi 1)  (set! key-name #{ \markup {D\raise #.4 \magnify #.8 {\flat} 
>Major} #}))
>((= tonic-semi 10) (set! key-name #{ \markup {B\raise #.4 \magnify #.8 {\flat} 
>Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 0) (cond
>((= tonic-semi 6) (set! key-name #{ \markup {G\raise #.4 \magnify #.8 {\flat} 
>Major} #}))
>((= tonic-semi 3) (set! key-name #{ \markup {E\raise #.4 \magnify #.8 {\flat} 
>Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>((= psn 3) (cond
>((= tonic-semi 11) (set! key-name #{ \markup {C\raise #.4 \magnify #.8 {\flat} 
>Major} #}))
>((= tonic-semi 8)  (set! key-name #{ \markup {A\raise #.4 \magnify #.8 {\flat} 
>Minor} #}))
>(else (set! key-name #{\markup{}#}))
>))
>)
>  )
>  )
>  (ly:grob-set-property! grob 'stencil 
>(ly:stencil-combine-at-edge 
>(ly:key-signature-interface::print grob) 
>1 1 
>(ly:stencil-scale (grob-interpret-markup grob key-name) 
>txt-size txt-size) 
>padd )) 
>)))))
>
>
>\layout {
>  \context {
>    \Staff
>    \consists \Custom_key_sig_engraver
>  }
>}
>
>
>\new Staff \relative c {
>  \clef bass
>  \key c \major
>  c1
>  \key a \minor
>  a1
>  \key g \major 
>  g1 
>  \key e \minor
>  e'1
>  \key d \major 
>  d1
>  \key b \minor
>  b1 
>  \key a \major 
>  a1 
>  \key fis \minor
>  fis'1
>  \key e \major 
>  e1
>  \key cis \minor
>  cis1
>  \key b \major 
>  b1 
>  \key gis \minor
>  gis1
>  \key fis \major 
>  fis'1 
>  \key dis \minor
>  dis1
>  \key cis \major 
>  cis1
>  \key ais \minor
>  ais1
>  \key f \major 
>  f'1
>  \key d \minor
>  d1
>  \key bes \major 
>  bes1
>  \key g \minor
>  g'1
>  \key ees \major 
>  ees1
>  \key c \minor
>  c1
>  \key aes \major 
>  aes1
>  \key f \minor
>  f'1
>  \key des \major 
>  des1
>  \key bes \minor
>  bes1
>  \key ges \major 
>  ges'1
>  \key ees \minor
>  ees1
>  \key ces \major 
>  ces1
>  \key aes \minor
>  aes1
>}
>
>
>
>
>
>On Nov 13, 2012, at 3:23 PM, MING TSANG <tsan...@rogers.com> wrote:
>
>Hi, Paul:
>>
>>For now I just do alternate key signature on the top staff only or use 
>>manually by hand . Hope you have time to re-work to use rehearsal approach. 
>>
>>
>>
>> 
>>Blessing in+,
>>Ming
>>
>
>
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to