On Tue, Jan 15, 2013 at 10:43 PM, Kieren MacMillan
<[email protected]> wrote:
>> There's this: http://lsr.dsi.unimi.it/LSR/Item?id=697 which is useful
>> when the transposition changes mid-piece (like for clarinets, horns,
>> and trumpets). Also you don't have to think about the 'from' pitch.
>> You only need the 'to' pitch.
>
> That doesn't seem to handle key signatures very well — is there a workaround?
It was a simple change to make it take into account the key
signatures. I updated it for the latest version as well (functions
should take in pitches directly). I'm used to horn music devoid of key
signatures :).
\version "2.17.10"
#(define (adjust-note mus key currkey)
(cond ((or
(eq? (ly:music-property mus 'name) 'NoteEvent)
(eq? (ly:music-property mus 'name) 'KeyChangeEvent))
(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:pitch? 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 key)))
music = \relative c' {
\time 4/4
\transposition f
\key c \major
c e g c |
\transposition ees
\key c \major
c, e g c |
\transposition g
\key c \major
c, e g c |
}
\score {
<<
\new Staff {
\music
}
\new Staff {
\normalizeTransposition c' \music
}
>>
\layout {}
\midi {}
}
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user