Thomas Morley <thomasmorle...@gmail.com> writes: >>> And then you use either >>> \scalesAndTriads { c f bes ees aes des ges g d a e b fis } >>> or >>> \scalesAndTriads << c f bes ees aes des ges g d a e b fis >> >>> >>> I'd not use \relative $music here: that looks like asking for trouble. > > Not sure what you suspect. > May I ask for some details?
Silently applying \relative means that a) a reference pitch will be picked out without asking the user b) if the user intended absolute pitch, he'll get a surprise > I now come up with: > > \version "2.17.25" > > multipleTranspose = > #(define-music-function (parser location m music)(ly:music? ly:music?) > (let* ((elts (ly:music-property m 'elements)) > (pitches (map (lambda (x) (ly:music-property x 'pitch)) elts)) > (transposed-music-list > (map (lambda (pitch) #{ \transpose c $pitch $music #}) pitches))) > > #{ > $(cond ((music-is-of-type? m 'sequential-music) > (make-sequential-music transposed-music-list)) > ((music-is-of-type? m 'simultaneous-music) > (make-simultaneous-music > (map > (lambda (el) #{ \new Staff $el #}) > transposed-music-list))) > ;; Not sure whether there's need for, > ;; though, better be a paranoiac. > (else > (ly:error > "m should be sequential or simultaneous-music. Typo?"))) > #})) > > %% Examples > > \new Staff > \multipleTranspose { c cis } \relative c'' { g a } > > \new StaffGroup > \multipleTranspose << c cis >> \relative c'' { g a } Well, as with \relative, I'd say that \new Staff deserves getting _explicit_ specification by the user if that's his intent. Now let's do this somewhat recklessly:
\version "2.17.23" multipleTranspose = #(define-music-function (parser location m music)(ly:music? ly:music?) (music-clone m 'elements (map (lambda (pitch) (ly:music-property #{ \transpose c $pitch $music #} 'element)) (event-chord-pitches m)))) %% Examples \new Staff \multipleTranspose { c cis } \relative c'' { g a } \new StaffGroup \multipleTranspose << c cis >> \relative c'' \new Staff { g a } \new Staff \multipleTranspose <c cis> g''!
-- David Kastrup
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user