lilypond-user
[Top][All Lists]
Advanced

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

Re: looking for Turkish key sig workaround


From: Rune Zedeler
Subject: Re: looking for Turkish key sig workaround
Date: Fri, 29 Jun 2007 17:36:35 +0200
User-agent: Thunderbird 1.5.0.12 (X11/20070604)

Adam Good skrev:

and here's what I use in Lilypond to show that key signature:

%%%%%%%%
\override Accidental #'glyph-name-alist = \makamGlyphs
 \override Staff.KeySignature #'glyph-name-alist = \makamGlyphs
 \set Staff.keySignature = #'(
 (1 . 4/9)(-3 . 4/9)(3 . 1/9))
%%%%%%%%

You do not specify which version you use.
In latest devel it does not work - the makamGlyphs is undefined.
Well, the procedure that typesets the glyphcs is key-signature-interface::alteration-position. P.t. you have to type in the entire thing again to edit it. The following gives the key signature you are looking for.
This should imo be done in a better way - but for now you can use it:

\version "2.11.25"

#(set! key-signature-interface::alteration-position
(lambda (step alter c0-position)
  ;; TODO: memoize - this is mostly constant.

  ;; fes, ges, as and bes typeset in lower octave
  (define FLAT_TOP_PITCH 2)

  ;; ais and bis typeset in lower octave
  (define SHARP_TOP_PITCH 3)

  (if (pair? step)
      (+ (cdr step) (* (car step) 7)  c0-position)
      (let*
          ((from-bottom-pos (modulo (+ 4 49 c0-position)  7))
           (p step)
           (c0 (- from-bottom-pos  4)))
        
        (if
(or (and (< alter 0) (or (> p FLAT_TOP_PITCH) (> (+ p c0) 4)) (> (+ p c0) 1)) (and (> alter 0) (or (> p SHARP_TOP_PITCH) (> (+ p c0) 5)) (> (+ p c0) 2))
             )

         ;; Typeset below c_position
         (set! p (- p 7)))

        ;; Provide for the four cases in which there's a glitch
        ;; it's a hack, but probably not worth
        ;; the effort of finding a nicer solution.
        ;; --dl.
        (cond
         ((and (= c0 2) (= p 3) (> alter 0))
          (set! p (- p 7)))
         ((and (= c0 -3) (= p -1) (> alter 0))
          (set! p (+ p 7)))
         ((and (= c0 -4) (= p -1) (< alter 0))
          (set! p (+ p 7)))
         ((and (= c0 -2) (= p -3) (< alter 0))
          (set! p (+ p 7))))

        (+ c0 p)))))

\score{ {
  \set Staff.keySignature = #'(
  (1 . 1/2)(4 . 1/2)(3 . 1/4))
  g'

} }




reply via email to

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