On 10 Mar 2013, at 10:06 , David Kastrup wrote:

Wim van Dommelen <[email protected]> writes:

Agree, we should have an easy way to switch from absolute to relative
(Yes, everthing inside \relative { } is relative, all other is
absolute, I know), like: \absolute: from here on everything is
absolute like \clef bass tells me: from here on display everything in
the bass clef.

Barely tongue-in-cheek:

absolute =
#(define-music-function (parser location music) (ly:music?)
  (make-music 'TransposedMusic 'element music))

When placed inside of a \relative block, \relative will route around
this music.  It stays in absolute pitch and does not even touch the
reference pitch of \relative.  This might be somewhat useful in
connection with music variables:

melody = \absolute { c'4 e' g' c' }

\relative f { c''4. g'8 c,2 \melody d4 e f c }

Not quite what I had in mind, this is still using a "wrap" with { }

Compared with the \clef behaviour, I see this variant:

melody = { \relative c='4 d e f g f e d c \absolute c,, d,, e,, f,, g,, \relative c=' d e f }

The { } only wrap the notes for the variable to be defined. The sequence switches from a relative section based on the c=', then to absolute notes and then back to relative again. See it as switching to another state of mind, no { } with the \relative needed. \clef switches to another clef without the need to wrap the rest of your music in curly brackets.

mixedclefabsolute = { \absolute \clef bass c4 d e f g a b \clef treble c' d' e' f' g' a' b' c'' }


If you wrote just

melody = { c'4 e' g' c' }

here, things would go rather haywire.

True :-(, but I would probably say:

melody = { \absolute c'4 e' g' c' }

which should hold in any copy&paste, transpose, etc.


--
David Kastrup


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


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

Reply via email to