lilypond-user
[Top][All Lists]
Advanced

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

Re: Current octave in relative mode


From: David Kastrup
Subject: Re: Current octave in relative mode
Date: Sun, 17 May 2020 00:19:10 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

antlists <address@hidden> writes:

> On 15/05/2020 12:28, antlists wrote:
>> There's a function Han Wen wrote for me years ago, that's made its
>> way in to standard lilypond. It's probably mentioned in the docu
>> about relative mode. Something along the lines of
>>        c1  \highlight { c8 d e f g f e d }
>>        \setAbsoluteOctave ...
>>        c1  \highlight { c8 d e f g a b c }
>> Don't quote me on the function name though ... (I needed it for 
>> Pennsylvania 6-5-0-0-0
>
> Found it ...
>
> \version "2.8.2"
>
> resetOctave  =
> #(define-music-function
>     (parser location reference-note)
>     (ly:music?)
>
>    (let*
>     ((notes (ly:music-property reference-note 'elements))
>      (pitch (ly:music-property (car notes) 'pitch))
>
>    )
>
>     (set! (ly:music-property reference-note 'elements) '())
>     (set! (ly:music-property reference-note
>        'to-relative-callback)
>        (lambda (music last-pitch)
>         pitch))
>
>     reference-note
>     ))
>
> pennsylvania = \context Voice = pennsylvania {
>     \override NoteHead #'style = #'cross
>     r2_\markup{ shout } f8. f16 f8. f16 f4 f f8. f16 r4
> }
>
> pennsylvaniaLyrics = \lyricmode { \small { Penn syl van ia six five
> thou sand } }
>
> voiceTromboneI = \relative c' {
>
>       r2  ef4.-- ef8-> ~ ef1 r2 r4 bf8.->( ef16-.) r2 r4 ef,8. af,16-> ~ |
>       af2 c-- df-- d-- ef-- df-- c-- bf-- |
>       \repeat "volta" 2 { R1*6 } \alternative { { \resetOctave f
>       \pennsylvania } { \pennsylvania } }
>       bf8-. cf4-> bf8-> ~ bf4 bf8.-- af16-. r8 af4.---. r2
>       bf8-. cf4-- bf8-> ~ bf4 bf8.-- af16-> ~ |
>
>> Cheers,
>> Wol
>> 
> Okay, this is just the start of the file so it won't compile as is :-)
> but you can see it defines the function resetOctave. I don't 
> particularly remember how it works, but you also see how it's used
> further down. iirc it eats the first note after it - the f - and
> treats it as an absolute pitch of zero length so the subsequent phrase
> is at the right pitch regardless of what went in front of it.
>
> As I say, I think this function or something similar has made its way
> into lilypond proper.

What advantage over the solution using make-relative that I posted do
you see here?

-- 
David Kastrup



reply via email to

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