Here's a little snippet which does what I want. If there's a standard
way to do this let me know.

-----Jay

\version "2.11.49"

#(define (adjust-note mus key currkey)
  (cond ((eq? (ly:music-property mus 'name) 'NoteEvent)
          (ly:music-transpose mus (car currkey)))
        ((and
           (eq? (ly:music-property mus 'name) 'PropertySet)
           (eq? (ly:music-property mus 'symbol) 'instrumentTransposition))
          (set-car! currkey (ly:pitch-negate (ly:music-property mus 'value)))
          (ly:music-set-property! mus 'value (ly:make-pitch 0 0 0))
          mus)
        (else mus)))

normalizeTransposition = #(define-music-function (parser location key
music) (ly:music? ly:music?)
  (ly:music-transpose
    (let ((currkey (list (ly:make-pitch 0 0 0))))
      (music-map (lambda (x) (adjust-note x key currkey)) music))
    (ly:pitch-negate (ly:music-property (car (ly:music-property key
'elements)) 'pitch))))

music = \relative c'
{
  \time 4/4
  \transposition f
  c e g c |
  \transposition ees
  c, e g c |
  \transposition d
  c, e g c |
}

\score
{
  <<
    \new Staff
    {
      \music
    }
    \new Staff
    {
      \normalizeTransposition f \music
    }
  >>
  \layout {}
  \midi {}
}


On Thu, Jun 19, 2008 at 7:32 PM, Jay Anderson <[EMAIL PROTECTED]> wrote:
> If I have a section like:
>
> \relative c'
> {
>  \time 4/4
>  \transposition f
>  c e g c |
>  \transposition ees
>  c, e g c |
>  \transposition d
>  c, e g c |
> }
>
> Is there an easy way to change it all to the same key for printing?
>
> Something like '\normalizeTransposition f \music' would be equivalent to:
>
> \relative c'
> {
>  \time 4/4
>  \transposition f
>  c e g c |
>  bes, d f bes |
>  a, cis e a |
> }
>
> Thanks.
>
> -----Jay
>


_______________________________________________
lilypond-user mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to