Re: Condensing single-bar rests into a multi-measure rest

2015-01-04 Thread David Sumbler
On Sun, 2015-01-04 at 09:26 +0100, Urs Liska wrote:
> >I have now corrected my version of the combineMMRests function, but
> >unfortunately it still leaves my output unaffected.
> >
> >I can see how something like this could work - unfortunately my
> >understanding at this stage of Scheme and Lilypond internals is
> >insufficient for me to see where the problem might be or to write
> >something similar from scratch.
> >
> >I can't see why \parallelMusic should cause a problem: presumably it
> >just returns exactly what the individual parts would produce if they
> >were not interleaved in the parallelMusic structure.
> >
> >David
> >
> >
> 
> But you do have the \compressFullBarRests somewhere? 
> 
> Urs 

Oops!  No, I hadn't, and now that I have included it things appear to
work perfectly.

I'm delighted to see that I can simply include \compressFullBarRests in
each individual instrument's Staff without it adversely affecting the
output of the score, which obviously needs the rests to be shown
individually (unless all instruments are 'tacet' for 2 or more bars).

Sincere thanks for all your help.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-04 Thread Urs Liska


Am 4. Januar 2015 01:16:23 MEZ, schrieb David Sumbler :
>From: Urs Liska 
>To: lilypond-user@gnu.org
>Subject: Re: Condensing single-bar rests into a multi-measure rest
>Date: Sat, 03 Jan 2015 18:59:17 +0100
>> > 
>Am 03.01.2015 um 18:45 schrieb David Sumbler:
>>> From: Urs Liska 
>>> To: lilypond-user@gnu.org
>>> Subject: Re: Condensing single-bar rests into a multi-measure rest
>>> Date: Sat, 03 Jan 2015 16:45:27 +0100
>>>
>>> Am 03.01.2015 um 16:36 schrieb David Sumbler:
>>>> I have now finished setting the saxophone quartet, which is the
>first
>>>> substantial multi-instrument piece I have attempted with Lilypond.
>>>>
>>>> I am very pleased with the result, and I am now at the stage of
>tweaking
>>>> the appearance of the output.
>>>>
>>>> Searching in the Lilypond documentation, one problem I have not
>been
>>>> able to find a solution to is this: in the piece there are a few
>places
>>>> where one instrument is silent for several consecutive bars.  In
>the
>>>> score these obviously appear as single bar rests, but in the
>relevant
>>>> instrumental part I should like them to appear as a "multi-measure
>>>> rest".
>>>>
>>>> The problem may be that I have used \parallelMusic for the whole
>score:
>>>> this seems an obvious way of doing things for a piece such as this
>with
>>>> a small number of instruments.  It has certainly been far easier to
>find
>>>> my way around the file than in my previous Lilypond efforts (e.g. a
>>>> piece for flute and piano), even though they were a lot shorter
>than
>>>> this one.
>>>>
>>>> But looking at the documentation, I can only see multi-measure
>rests
>>>> appearing if they are entered as multi-measure quantities - e.g.
>R1*6.
>>>> If this is true, then the only way I can see to get the result I
>want,
>>>> would be to deconstruct my whole file and reassemble it as 4
>separate
>>>> sections, one for each instrument.  This in itself will be a
>tedious
>>>> chore, but it also means the resulting file(s) will be much less
>easily
>>>> navigable when I make further additions and modifications.
>>>>
>>>> Is there any way to get the result I want whilst still keeping the
>>>> \parallelMusic layout?
>>> LilyPond by default only interprets single entities as combinable
>rests
>>> (i.e. R1*6), while consecutive rests (e.g. R1 R1) are separated by
>>> \compressFullBarRests.
>>>
>>> I recently had the same problem and got a file from the list which I
>>> tweaked to work well in a quite similar case.
>>> You can find the file at
>>>
>https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily
>>>
>>> I'm not sure if it is really straightforward to use in other
>contexts
>>> but I suspect you should be able to use it.
>>> You have to remove the conditional expression in the last function
>>> \combineMMRests (because that's project specific), but I expect the
>file
>>> to work smoothly once you've done that.
>>>
>>> To use it include the file and surround your music by
>\combineMMRests
>>> \yourMusic.
>>>
>>> HTH
>>> Urs
>> Thanks for that.  I have tried the file, and although it does not
>> produce any errors, it does not seem to change the output at all.  So
>it
>> may be that I am doing something wrong.  Here is what I have done.
>>
>> Firstly, the final function now reads:
>>
>> combineMMRests =
>> #(define-music-function (parser location music) (ly:music?)
>> (condense music)
>> music)
>>
>> I'm not entirely sure I have got this right!
>
>No, that's not right. The "result" of a Scheme function is the result
>of 
>the last expression, and that is "music" in your case, so you're 
>returning the unaltered music argument.
>
>I think (without testing) that
>
>combineMMRests =
>#(define-music-function (parser location music) (ly:music?)
>(condense music))
>
>should be right.
>
>>
>> Secondly, in the section of my main file which produces a part for a
>> instrument, I have:
>>
>> \score {
>>  \combineMMRests {
>>  \myMusic
>>  }
>>  \layout {
>>  }
>> }
&

Re: Condensing single-bar rests into a multi-measure rest

2015-01-04 Thread Urs Liska


Am 04.01.2015 um 02:13 schrieb Kieren MacMillan:

Hi Urs,


I'm not sure about that because that wasn't the problem at hand.
My problem was that I have to merge multimeasure rests that were written as e.g.

R1*4 {} R1*6

The empty expression is a music function that can return a \break (-> no rest 
merging) or an empty expression.
The linked function is able to merge consecutive rests when they are of the 
same type.

As I didn't look too close into the thread you linked I don't know if my 
problem is related to yours, but I suspect it's rather something different.

My problem was

\version "2.19.15"

\new Staff \with { \compressFullBarRests }
 << { R1*8 } { \repeat unfold 8 {s1} } >>

Keith’s \mergeSkips deals with that, but (if I understand correctly) not your 
empty-expression problem.


My function also merges skips but it fails on the \repeat construct.
So R1 R1 s1 s1 gives the attached result, but when you use \repeat 
multiple empty bars are printed.
This is because \repeat unfold is a completely different representation 
than explicitly repeated music. I think it could be included if that's 
the issue, but I assume it's over my head so far. Principally it's a 
quite simple thing (just adding another conditional and taking the 
expression apart) but I don't have experience with this.


See the attached -- now self-contained -- file for some examples.

Urs



Cheers,
Kieren.
___

Kieren MacMillan, composer
www:  
email:  i...@kierenmacmillan.info



\version "2.16.0"

% Taken from improved version from
% http://lilypond.1069038.n5.nabble.com/new-snippet-combine-multimeasure-rests-td144688.html
% Improved by Urs Liska to also merge over empty music expressions


#(define (add-durations dur1 dur2)
   (let* ((len1 (ly:duration-length dur1))
  (len2 (ly:duration-length dur2))
  (mult (ly:moment-div (ly:moment-add len1 len2) len1)))
 (ly:make-duration (ly:duration-log dur1)
   (ly:duration-dot-count dur1)
   (* (ly:duration-scale dur1) (ly:moment-main mult)

#(define (combinable-rest? rest)
   (and (ly:music? rest)
(or (eq? 'MultiMeasureRestMusic (ly:music-property rest 'name))
(eq? 'SkipEvent (ly:music-property rest 'name)))
(null? (ly:music-property rest 'articulations

#(define (combine-rests rest1 rest2)
   ;; create one rest/skip with the sum of both lengths
   (make-music (ly:music-property rest1 'name)
 'duration (add-durations (ly:music-property rest1 'duration)
 (ly:music-property rest2 'duration))
 'articulations '()))

#(define (consolidator curr rest)
   ;; determine ir we have consecutive MultimeasureRests or skips
   (if (and (combinable-rest? curr)
(not (null? rest)))
   ;; -> we have a combinable rest left and 'something' right
   (if (and (combinable-rest? (car rest))
(eq? (ly:music-property curr 'name) (ly:music-property (car rest) 'name)))
   ;; -> we also have a combinable rest right and both are the same type,
   ;; recurse by first merging rests and then looking for the next item
   (consolidator (combine-rests curr (car rest))
 (cdr rest))
   ;; -> right is either no combinable rest or one of different type.
   (if (or (eq? 'BarCheck (ly:music-property (car rest) 'name))
   (eq? 'Music (ly:music-property (car rest) 'name)))
   ;; -> right is one of the 'skippable' types,
   ;; so recurse using left and the next one to the right
   (consolidator curr (cdr rest))
   ;; just return left followed by righ
   (cons curr rest)))
   ;; -> no combinable rest to the left
   ; But what happens when rest *is* null?
   (cons curr rest)))

#(define (accumulate-result output input)
   ;; recurse over the elements of 'music', appending consolidated
   ;; items (i.e. the item or a merged rest) to 'output'
   (if (null? input)
   output
   (let ((done output)
 (curr (car input))
 (rest (cdr input)))
 (if (null? rest)
 (append done (list curr))
 (let ((prev (consolidator curr rest)))
   (accumulate-result (append done (list (car prev))) (cdr prev)))

#(define (condense music)
   ;; recurse over the music list and condense consecutive rests
   (let* ((output music)
  (elts (ly:music-property output 'elements))
  (elt (ly:music-property output 'element)))
 (if (pair? elts)
 (ly:music-set-property! output 'elements (map condense (accumulate-result '() elts
 (if (ly:music? elt)
 (ly:music-set-property! output 'element (condense elt)))
 output))

combineMMRests =
#(define-music-function (parser location music) (ly:music?)
   ;; process the 'music' argument and merge consecutive MultimeasureRests
   (condense music))

\combineMMRests {
  \compressFullBarRests
 

Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread Kieren MacMillan
Hi Urs,

> I'm not sure about that because that wasn't the problem at hand.
> My problem was that I have to merge multimeasure rests that were written as 
> e.g.
> 
> R1*4 {} R1*6
> 
> The empty expression is a music function that can return a \break (-> no rest 
> merging) or an empty expression.
> The linked function is able to merge consecutive rests when they are of the 
> same type.
> 
> As I didn't look too close into the thread you linked I don't know if my 
> problem is related to yours, but I suspect it's rather something different.

My problem was

\version "2.19.15"

\new Staff \with { \compressFullBarRests }
<< { R1*8 } { \repeat unfold 8 {s1} } >>

Keith’s \mergeSkips deals with that, but (if I understand correctly) not your 
empty-expression problem.

Cheers,
Kieren.
___

Kieren MacMillan, composer
www:  
email:  i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread Urs Liska


Am 04.01.2015 um 01:16 schrieb Kieren MacMillan:

Hi Urs,

On Jan 3, 2015, at 10:45 AM, Urs Liska  wrote:

I recently had the same problem and got a file from the list which I tweaked to 
work well in a quite similar case.
You can find the file at
https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily

Was that inspired by 
?


No. I got that from
http://lists.gnu.org/archive/html/lilypond-user/2013-04/msg00531.html



If so, does what is the final result?
That is to say, is there a single function which one can use to merge skips AND 
rests?


I'm not sure about that because that wasn't the problem at hand.
My problem was that I have to merge multimeasure rests that were written 
as e.g.


R1*4 {} R1*6

The empty expression is a music function that can return a \break (-> no 
rest merging) or an empty expression.
The linked function is able to merge consecutive rests when they are of 
the same type.


As I didn't look too close into the thread you linked I don't know if my 
problem is related to yours, but I suspect it's rather something different.


Best
Urs



Thanks,
Kieren.
___

Kieren MacMillan, composer
www:  
email:  i...@kierenmacmillan.info




___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread Kieren MacMillan
Hi Urs,

On Jan 3, 2015, at 10:45 AM, Urs Liska  wrote:
> I recently had the same problem and got a file from the list which I tweaked 
> to work well in a quite similar case.
> You can find the file at
> https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily

Was that inspired by 
?

If so, does what is the final result?
That is to say, is there a single function which one can use to merge skips AND 
rests?

Thanks,
Kieren.
___

Kieren MacMillan, composer
www:  
email:  i...@kierenmacmillan.info


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread David Sumbler
From: Urs Liska 
To: lilypond-user@gnu.org
Subject: Re: Condensing single-bar rests into a multi-measure rest
Date: Sat, 03 Jan 2015 18:59:17 +0100
> > 
Am 03.01.2015 um 18:45 schrieb David Sumbler:
>> From: Urs Liska 
>> To: lilypond-user@gnu.org
>> Subject: Re: Condensing single-bar rests into a multi-measure rest
>> Date: Sat, 03 Jan 2015 16:45:27 +0100
>>
>> Am 03.01.2015 um 16:36 schrieb David Sumbler:
>>> I have now finished setting the saxophone quartet, which is the first
>>> substantial multi-instrument piece I have attempted with Lilypond.
>>>
>>> I am very pleased with the result, and I am now at the stage of tweaking
>>> the appearance of the output.
>>>
>>> Searching in the Lilypond documentation, one problem I have not been
>>> able to find a solution to is this: in the piece there are a few places
>>> where one instrument is silent for several consecutive bars.  In the
>>> score these obviously appear as single bar rests, but in the relevant
>>> instrumental part I should like them to appear as a "multi-measure
>>> rest".
>>>
>>> The problem may be that I have used \parallelMusic for the whole score:
>>> this seems an obvious way of doing things for a piece such as this with
>>> a small number of instruments.  It has certainly been far easier to find
>>> my way around the file than in my previous Lilypond efforts (e.g. a
>>> piece for flute and piano), even though they were a lot shorter than
>>> this one.
>>>
>>> But looking at the documentation, I can only see multi-measure rests
>>> appearing if they are entered as multi-measure quantities - e.g. R1*6.
>>> If this is true, then the only way I can see to get the result I want,
>>> would be to deconstruct my whole file and reassemble it as 4 separate
>>> sections, one for each instrument.  This in itself will be a tedious
>>> chore, but it also means the resulting file(s) will be much less easily
>>> navigable when I make further additions and modifications.
>>>
>>> Is there any way to get the result I want whilst still keeping the
>>> \parallelMusic layout?
>> LilyPond by default only interprets single entities as combinable rests
>> (i.e. R1*6), while consecutive rests (e.g. R1 R1) are separated by
>> \compressFullBarRests.
>>
>> I recently had the same problem and got a file from the list which I
>> tweaked to work well in a quite similar case.
>> You can find the file at
>> https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily
>>
>> I'm not sure if it is really straightforward to use in other contexts
>> but I suspect you should be able to use it.
>> You have to remove the conditional expression in the last function
>> \combineMMRests (because that's project specific), but I expect the file
>> to work smoothly once you've done that.
>>
>> To use it include the file and surround your music by \combineMMRests
>> \yourMusic.
>>
>> HTH
>> Urs
> Thanks for that.  I have tried the file, and although it does not
> produce any errors, it does not seem to change the output at all.  So it
> may be that I am doing something wrong.  Here is what I have done.
>
> Firstly, the final function now reads:
>
> combineMMRests =
> #(define-music-function (parser location music) (ly:music?)
> (condense music)
> music)
>
> I'm not entirely sure I have got this right!

No, that's not right. The "result" of a Scheme function is the result of 
the last expression, and that is "music" in your case, so you're 
returning the unaltered music argument.

I think (without testing) that

combineMMRests =
#(define-music-function (parser location music) (ly:music?)
(condense music))

should be right.

>
> Secondly, in the section of my main file which produces a part for a
> instrument, I have:
>
> \score {
>   \combineMMRests {
>   \myMusic
>   }
>   \layout {
>   }
> }
>
> Is this correct?

That looks correct, although you don't need the curly braces around 
\myMusic in this case.

However, I don't know if parallelMusic is interfering here additionally.

HTH
Urs

I have now corrected my version of the combineMMRests function, but
unfortunately it still leaves my output unaffected.

I can see how something like this could work - unfortunately my
understanding at this stage of Scheme and Lilypond internals is
insufficient for me to see where the problem might be or to write
something similar from scratch.

I can't see why \parallelMusic should cause a problem: presumably it
just returns exactly what the individual parts would produce if they
were not interleaved in the parallelMusic structure.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread Urs Liska


Am 03.01.2015 um 18:45 schrieb David Sumbler:

From: Urs Liska 
To: lilypond-user@gnu.org
Subject: Re: Condensing single-bar rests into a multi-measure rest
Date: Sat, 03 Jan 2015 16:45:27 +0100

Am 03.01.2015 um 16:36 schrieb David Sumbler:

I have now finished setting the saxophone quartet, which is the first
substantial multi-instrument piece I have attempted with Lilypond.

I am very pleased with the result, and I am now at the stage of tweaking
the appearance of the output.

Searching in the Lilypond documentation, one problem I have not been
able to find a solution to is this: in the piece there are a few places
where one instrument is silent for several consecutive bars.  In the
score these obviously appear as single bar rests, but in the relevant
instrumental part I should like them to appear as a "multi-measure
rest".

The problem may be that I have used \parallelMusic for the whole score:
this seems an obvious way of doing things for a piece such as this with
a small number of instruments.  It has certainly been far easier to find
my way around the file than in my previous Lilypond efforts (e.g. a
piece for flute and piano), even though they were a lot shorter than
this one.

But looking at the documentation, I can only see multi-measure rests
appearing if they are entered as multi-measure quantities - e.g. R1*6.
If this is true, then the only way I can see to get the result I want,
would be to deconstruct my whole file and reassemble it as 4 separate
sections, one for each instrument.  This in itself will be a tedious
chore, but it also means the resulting file(s) will be much less easily
navigable when I make further additions and modifications.

Is there any way to get the result I want whilst still keeping the
\parallelMusic layout?

LilyPond by default only interprets single entities as combinable rests
(i.e. R1*6), while consecutive rests (e.g. R1 R1) are separated by
\compressFullBarRests.

I recently had the same problem and got a file from the list which I
tweaked to work well in a quite similar case.
You can find the file at
https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily

I'm not sure if it is really straightforward to use in other contexts
but I suspect you should be able to use it.
You have to remove the conditional expression in the last function
\combineMMRests (because that's project specific), but I expect the file
to work smoothly once you've done that.

To use it include the file and surround your music by \combineMMRests
\yourMusic.

HTH
Urs

Thanks for that.  I have tried the file, and although it does not
produce any errors, it does not seem to change the output at all.  So it
may be that I am doing something wrong.  Here is what I have done.

Firstly, the final function now reads:

combineMMRests =
#(define-music-function (parser location music) (ly:music?)
(condense music)
music)

I'm not entirely sure I have got this right!


No, that's not right. The "result" of a Scheme function is the result of 
the last expression, and that is "music" in your case, so you're 
returning the unaltered music argument.


I think (without testing) that

combineMMRests =
#(define-music-function (parser location music) (ly:music?)
   (condense music))

should be right.



Secondly, in the section of my main file which produces a part for a
instrument, I have:

\score {
\combineMMRests {
\myMusic
}
\layout {
}
}

Is this correct?


That looks correct, although you don't need the curly braces around 
\myMusic in this case.


However, I don't know if parallelMusic is interfering here additionally.

HTH
Urs



At the top of my file, of course, I have:

\include "combineMultimeasureRests.ily"

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user



___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread David Sumbler
> From: Urs Liska 
> To: lilypond-user@gnu.org
> Subject: Re: Condensing single-bar rests into a multi-measure rest
> Date: Sat, 03 Jan 2015 16:45:27 +0100
> 
> Am 03.01.2015 um 16:36 schrieb David Sumbler:
> > I have now finished setting the saxophone quartet, which is the first
> > substantial multi-instrument piece I have attempted with Lilypond.
> >
> > I am very pleased with the result, and I am now at the stage of tweaking
> > the appearance of the output.
> >
> > Searching in the Lilypond documentation, one problem I have not been
> > able to find a solution to is this: in the piece there are a few places
> > where one instrument is silent for several consecutive bars.  In the
> > score these obviously appear as single bar rests, but in the relevant
> > instrumental part I should like them to appear as a "multi-measure
> > rest".
> >
> > The problem may be that I have used \parallelMusic for the whole score:
> > this seems an obvious way of doing things for a piece such as this with
> > a small number of instruments.  It has certainly been far easier to find
> > my way around the file than in my previous Lilypond efforts (e.g. a
> > piece for flute and piano), even though they were a lot shorter than
> > this one.
> >
> > But looking at the documentation, I can only see multi-measure rests
> > appearing if they are entered as multi-measure quantities - e.g. R1*6.
> > If this is true, then the only way I can see to get the result I want,
> > would be to deconstruct my whole file and reassemble it as 4 separate
> > sections, one for each instrument.  This in itself will be a tedious
> > chore, but it also means the resulting file(s) will be much less easily
> > navigable when I make further additions and modifications.
> >
> > Is there any way to get the result I want whilst still keeping the
> > \parallelMusic layout?
> 
> LilyPond by default only interprets single entities as combinable rests 
> (i.e. R1*6), while consecutive rests (e.g. R1 R1) are separated by 
> \compressFullBarRests.
> 
> I recently had the same problem and got a file from the list which I 
> tweaked to work well in a quite similar case.
> You can find the file at
> https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily
> 
> I'm not sure if it is really straightforward to use in other contexts 
> but I suspect you should be able to use it.
> You have to remove the conditional expression in the last function 
> \combineMMRests (because that's project specific), but I expect the file 
> to work smoothly once you've done that.
> 
> To use it include the file and surround your music by \combineMMRests 
> \yourMusic.
> 
> HTH
> Urs

Thanks for that.  I have tried the file, and although it does not
produce any errors, it does not seem to change the output at all.  So it
may be that I am doing something wrong.  Here is what I have done.

Firstly, the final function now reads:

combineMMRests =
#(define-music-function (parser location music) (ly:music?)
   (condense music)
   music)

I'm not entirely sure I have got this right!

Secondly, in the section of my main file which produces a part for a
instrument, I have:

\score {
\combineMMRests {
\myMusic
}
\layout {
}
}

Is this correct?

At the top of my file, of course, I have:

\include "combineMultimeasureRests.ily"

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread Urs Liska


Am 03.01.2015 um 16:36 schrieb David Sumbler:

I have now finished setting the saxophone quartet, which is the first
substantial multi-instrument piece I have attempted with Lilypond.

I am very pleased with the result, and I am now at the stage of tweaking
the appearance of the output.

Searching in the Lilypond documentation, one problem I have not been
able to find a solution to is this: in the piece there are a few places
where one instrument is silent for several consecutive bars.  In the
score these obviously appear as single bar rests, but in the relevant
instrumental part I should like them to appear as a "multi-measure
rest".

The problem may be that I have used \parallelMusic for the whole score:
this seems an obvious way of doing things for a piece such as this with
a small number of instruments.  It has certainly been far easier to find
my way around the file than in my previous Lilypond efforts (e.g. a
piece for flute and piano), even though they were a lot shorter than
this one.

But looking at the documentation, I can only see multi-measure rests
appearing if they are entered as multi-measure quantities - e.g. R1*6.
If this is true, then the only way I can see to get the result I want,
would be to deconstruct my whole file and reassemble it as 4 separate
sections, one for each instrument.  This in itself will be a tedious
chore, but it also means the resulting file(s) will be much less easily
navigable when I make further additions and modifications.

Is there any way to get the result I want whilst still keeping the
\parallelMusic layout?


LilyPond by default only interprets single entities as combinable rests 
(i.e. R1*6), while consecutive rests (e.g. R1 R1) are separated by 
\compressFullBarRests.


I recently had the same problem and got a file from the list which I 
tweaked to work well in a quite similar case.

You can find the file at
https://git.ursliska.de/beautifulscores/das-trunkne-lied/blob/master/library/ly/to-lilylib/combineMultimeasureRests.ily

I'm not sure if it is really straightforward to use in other contexts 
but I suspect you should be able to use it.
You have to remove the conditional expression in the last function 
\combineMMRests (because that's project specific), but I expect the file 
to work smoothly once you've done that.


To use it include the file and surround your music by \combineMMRests 
\yourMusic.


HTH
Urs



David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user



___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Condensing single-bar rests into a multi-measure rest

2015-01-03 Thread David Sumbler
I have now finished setting the saxophone quartet, which is the first
substantial multi-instrument piece I have attempted with Lilypond.

I am very pleased with the result, and I am now at the stage of tweaking
the appearance of the output.

Searching in the Lilypond documentation, one problem I have not been
able to find a solution to is this: in the piece there are a few places
where one instrument is silent for several consecutive bars.  In the
score these obviously appear as single bar rests, but in the relevant
instrumental part I should like them to appear as a "multi-measure
rest".

The problem may be that I have used \parallelMusic for the whole score:
this seems an obvious way of doing things for a piece such as this with
a small number of instruments.  It has certainly been far easier to find
my way around the file than in my previous Lilypond efforts (e.g. a
piece for flute and piano), even though they were a lot shorter than
this one.

But looking at the documentation, I can only see multi-measure rests
appearing if they are entered as multi-measure quantities - e.g. R1*6.
If this is true, then the only way I can see to get the result I want,
would be to deconstruct my whole file and reassemble it as 4 separate
sections, one for each instrument.  This in itself will be a tedious
chore, but it also means the resulting file(s) will be much less easily
navigable when I make further additions and modifications.

Is there any way to get the result I want whilst still keeping the
\parallelMusic layout?

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user