lilypond-user
[Top][All Lists]
Advanced

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

Re: Repeat bars function


From: Mark Knoop
Subject: Re: Repeat bars function
Date: Wed, 5 Feb 2014 10:01:57 +0000

At 09:57 on 05 Feb 2014, Mark Knoop wrote:
>I'm making a music function below to automatically create a repeat
>structure. It's useable at the moment, but there are a couple of
>improvements that could be made - any suggestions for these would be
>very helpful.
>
>1. The main problem is where to revert the bar number visibility
>override. This needs to be done *after* the closing barline of the
>repeat - the idea being that the bar following a repeat is always
>numbered. Is there someway to schedule a delayed revert?

Ha - funny how actually writing the email helps solve the problem...
I've fixed this first issue by simply using "\once \override" twice:

repeatBars = #(define-music-function
    (parser location times endbar music)
    (number? number? ly:music?)
    (_i "make a repeat structure")
    #{
    \tag #'part {
      \once \override Score.BarNumber.break-visibility = ##(#t #t #t)
      <>^\markup \box \concat { "×" \number #(ly:number->string times) }
      \repeat volta #times { $music }
      \set Score.currentBarNumber = #endbar
      \once \override Score.BarNumber.break-visibility = ##(#t #t #t)
    }
    \tag #'score {
      \repeat unfold #times { $music }
    }
    #})

Suggestions for these others still appreciated.

>2. Ideally the [x3] markup should be right-aligned to the barline,
>however I can't use "\mark" here since this is likely to coincide with
>a real rehearsal mark in practice.
>
>3. It would be nice not to have to specify the endbar as an argument,
>however this requires access to the starting bar number and calculation
>of the duration of the music. I've tried to incorporate the
>"\applyContext" approach in the docs (Extending 2.6.1) - but I'm not
>sure how to access this within a music-function.
>
>Thanks, Mark
>
>%%%%%%%%%%%%%%%%%
>\version "2.18.0"
>
>repeatBars = #(define-music-function
>    (parser location times endbar music)
>    (number? number? ly:music?)
>    (_i "make a repeat structure")
>    #{
>    \tag #'part {
>      \override Score.BarNumber.break-visibility = ##(#t #t #t)
>      <>^\markup \box \concat { "×" \number #(ly:number->string
> times) } \repeat volta #times { $music }
>      \set Score.currentBarNumber = #endbar
>      % can't revert here as then the closing barnumber won't print
>      %\revert Score.BarNumber.break-visibility
>    }
>    \tag #'score {
>      \repeat unfold #times { $music }
>    }
>    #})
>
>music = \relative c' {
>  \repeat unfold 4 { c1 }
>  \mark \default
>  \repeatBars 3 8 { c4 d e f }
>  \repeat unfold 4 { c1 }
>}
>
>\score { \new Staff { \removeWithTag #'score \music } }
>\score { \new Staff { \removeWithTag #'part \music } }
>%%%%%%%%%%%%%%%%%
>


--
Mark Knoop



reply via email to

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