Hi Hans,

Thank you for the pointer - that sounds a lot like what I am trying to
achieve. I will certainly take a closer look at that.

Best regards,
Morten

On Mon, Sep 9, 2024 at 11:49 PM Hans Aikema <[email protected]> wrote:

>
>
> On 9 Sep 2024, at 23:10, Morten Lemvigh <[email protected]> wrote:
>
> Hi,
>
> I am experimenting with a system to create choir rehearsal midi files. A
> part of that is to unfold repeats. I have a function that accepts a score
> and creates a new score. The steps are:
> 1. Extract the music from the score
> 2. Unfold the repeats
> 3. Make a new score
>
> For some reason only the first note of the score is repeated and I get a
> "programming error: Moment is not increasing. Aborting interpretation."
>
> When I try to display-scheme-music of the unfolded music it looks like
> everything is there, but it is not included in the final score.
> I have tried to create a minimal example that reproduces the issue. It is
> pasted below.
>
> So the question is: what have I misunderstood? :-)
>
> Best regards,
> Morten
>
> \version "2.24.2"
>
> choirScore = \score {
>     \new Staff {
>         \relative c' {
>             \repeat volta 2 {
>                 c d e f
>             }
>         }
>     }
> }
>
> make-rehearsal =
> #(define-scheme-function
>   (the-score)
>   (ly:score?)
>   (ly:make-score (unfold-repeats-fully (ly:score-music the-score))))
>
> new-score = #(make-rehearsal choirScore)
> \new-score
>
>
> What I found very useful in my case for the rehearsal tracks is the
> rehearsalMidi function from the openlilylib gridly grit-templates include,
> which I’ve been using stand-alone in my own (historically grown and
> improved) choir arrangements.
>
> https://github.com/openlilylib/snippets/blob/master/ly/gridly/grid-templates.ily
>
> As an inspiration here’s how I’ve organised things in my system (which no
> doubt could be improved):
>
> A folder <songname> per song
> Variables for each of the voices’ notes (sopMusic, altMusic etc) and each
> of the voices lyrics (sopWords, altWords etc) each defined in a file named
> after the voice (soprano.ily, alto.ily etc)
>
> The main composition file bringing it all together <songname>.ly
> ```
> \version "2.19.3"
>
> \header {
>     …
> }
>
> \paper {
>     first-page-number = 1
> }
>
> global = {
>     % defines tempo, initial key, time signature
> }
>
> \include "soprano.ily"
> \include "alto.ily"
> \include "tenor.ily"
> \include "basso.ily"
> \include "../temlates/SATB.ily"
> ```
>
> Include-files to setup a staff per voice in a templates folder
> e.g. for Soprano (soprano.ily):
> ```
> \version "2.22.0"
> soprano_Staff = {
>     \new Staff = soprano \with {
>         instrumentName = "Soprano"
>         shortInstrumentName = "S"
>     }<<
>         \new Voice = "soprano" { \clef "treble"  \global \sopMusic }
>         \tag #'lyrics {\new Lyrics \with {alignBelowContext=sopStaff}
> \lyricsto soprano \sopWords}
>     >>
> }
> ```
>
> Include-file for an entire arrangement layout that includes the relevant
> per-voice templates and then goes on to defined the overall music as the
> allMusic variable
> ```
> allMusic = {
>     <<
>         \metronome
>         \new ChoirStaff <<
>                     \soprano_Staff
>                     \alto_Staff
>                     \tenor_Staff
>                     \basso_Staff
>         >> % end of ChoirStaff
> >> % end of full system
> }
> ```
>
> Which is then used both to create a full SATB-score sheet music as per
> ```
> \book {
>     \bookOutputSuffix "lilypond"
>     \score {
>         \removeWithTag #'metronome
>         \allMusic
>
>         \layout {}
>     }
> }
> ```
>
> A tutti-track with all music at regular volume:
> ```
> \book {
>     \bookOutputSuffix "tutti"
>     \score {
>         \unfoldRepeats { \removeWithTag #'lyrics \allMusic }
>         \midi {
>             \context {
>                 \Score
>                 dynamicAbsoluteVolumeFunction = #hatikwaDynamics
>             }
>         }
>     }
> }
> ```
>
> And per-voice highlighted tracks (using the rehearsal-midi function,
> which, among others, unfolds the music and lowers the volume of all voices
> except the voice given as its argument)  e.g. for the soprano group:
> ```
> \rehearsalMidi { \removeWithTag #'lyrics \allMusic } "soprano"
> ```
>
>
>
>

Reply via email to