lilypond-user
[Top][All Lists]
Advanced

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

Re: Further scheme help, please


From: David Kastrup
Subject: Re: Further scheme help, please
Date: Mon, 30 May 2016 16:18:50 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux)

Phil Holmes <address@hidden> writes:

> I have some boiler-plate markup that I use in 16C music to show the lyric 
> repeat sign they use: a small circle, 2 lines and another circle.  This is 
> what I use, split into separate lines and commented:
>
> \once \override Lyrics.LyricText.Y-extent = #'(-10 . 10) % stops 
> collisions with stems
> \set lyricMelismaAlignment = #CENTER % keeps the symbol centred
> \markup { \raise #1 % shifts it up
> { \draw-circle #0.1 #0.1 ##t % draw the first circle
> \raise #1 { \draw-line #'( 0 . -2 ) } % draw first line
> \raise #1 { \draw-line #'( 0 . -2 ) } % draw second line
> \draw-circle #0.1 #0.1 ##t } } % draw final circle
> _ _ _ _ _  % one underscore for each note in the lyric repeat 
> \unset lyricMelismaAlignment % reset alignment
>
> I was hoping to replace this with a function to make the copying and 
> pasting less of a problem.  Ideally, I would have something like:
>
> lyr = \lyricmode { Word \LyRep #5 next word }
>
> And the LyRep command would use the commands above to draw the repeat sign 
> and add 5 skips.  Problem is, I can't currently get close to making this 
> work.  I can draw the symbol with a define-markup-command, but don't know 
> how to deal with the skips.
>
> Help appreciated.

Assuming 2.19.not-too-old:

LyRep =
#(define-music-function (n) (number?)
   #{ all of the above up to the underlines
      $@(make-list n #{ \lyricmode { _ } #})
      \unset lyricMelismaAlignment
   #})

For 2.18, you'll need the typical parser location rap before n.

-- 
David Kastrup



reply via email to

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