Hi Jean,

actually, there seems to be a bit of a problem:

\new Voice {
  R1*3 | r2 r4.
  \makeClusters { <d f>8 | q1 | q8 <d d'> <d' f>2. | q1 | q1 | q2 r2 }
  \barNumberCheck #10
  \makeClusters {
    <d, f>1 | q4. <d d'>8 <d' f>2 | q1 | q2 <d, f>2 |
    \barNumberCheck #14 %1
    q2 <d d'>2 | q2 <d a'> | <d a' d>2 q8. <f d'>8. <d d'>8 | q1 | q1 | q2.
<d f>4 |
  }
  R1*47
  \makeClusters { <c g>1 | q1 | <d e>1 | <d d'>1 | <d' e>1 | q1 | q1 | q1 |
}
  R1*11
  \barNumberCheck #86
}

gives the error message:

Starting lilypond.exe 2.23.9 [Untitled]...
Processing
`C:/Users/sia/AppData/Local/Temp/frescobaldi-kad5rc1x/tmpi_go0x11/
document.ly'
Parsing...
Interpreting music...[8][16][24][32][40][48][56][64][72][80]
Preprocessing graphical objects...
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...ice-9/eval.scm:155:9: In procedure car: Wrong type
argument in position 1 (expecting pair): ()
Exited with return code 1.

If i comment out the 3rd \makeClusters, it works though.

Any ideas?

Thanks, kind regards,
sb

On Fri, 27 May 2022 at 20:38, Simon Bailey <[email protected]> wrote:

> Hi Jean,
>
> sweet, that does the trick perfectly! Thanks for your help.
>
> Kind regards,
> sb
>
> On Fri, 27 May 2022 at 20:31, Jean Abou Samra <[email protected]> wrote:
>
>> Le 27/05/2022 à 20:57, Simon Bailey a écrit :
>> > Jean,
>> >
>> > That's absolutely amazing, thanks so much!
>> >
>> > However, unlike the "regular" clusters, it doesn't extend to the
>> > barlines, leaving some empty holes. See attached screenshots. (I'm
>> > running 2.23.9 on Windows).
>> >
>> > I can provide a MWE of my score if you'd like.
>>
>>
>>
>> Aye. I was lazy and thought you wouldn't need that :-)
>>
>> Next try:
>>
>>
>> \version "2.23.9"
>>
>> #(use-modules (ice-9 match))
>>
>> #(define (cluster::dashed-fill grob)
>>     (let* ((columns (ly:grob-object grob 'columns))
>>            (column-list (ly:grob-array->list columns))
>>            (x-refp (ly:grob-common-refpoint-of-array grob columns X))
>>            (y-refp (ly:grob-common-refpoint-of-array grob columns Y))
>>            (my-exts (map (lambda (c)
>>                           (ly:grob-extent c y-refp Y))
>>                         column-list))
>>            (my-coords (map (lambda (c)
>>                             (ly:grob-relative-coordinate c x-refp X))
>>                           column-list))
>>            (after-me (find-tail (lambda (s)
>>                                   (eq? s grob))
>>                                 (ly:spanner-broken-into
>> (ly:grob-original grob))))
>>            (neighbor (and after-me
>>                           (pair? (cdr after-me))
>>                           (cadr after-me)))
>>            (exts (if neighbor
>>                      (append my-exts
>>                              (let* ((neighbor-cols (ly:grob-object
>> neighbor 'columns))
>>                                     (first-neighbor-col (car
>> (ly:grob-array->list neighbor-cols)))
>>                                     (neighbor-refp
>> (ly:grob-common-refpoint-of-array neighbor neighbor-cols Y)))
>>                                (list (ly:grob-extent first-neighbor-col
>> neighbor-refp Y))))
>>                      my-exts))
>>            (coords (if neighbor
>>                        (append my-coords
>>                                (let ((bound (ly:spanner-bound grob
>> RIGHT)))
>>                                  (list (ly:grob-relative-coordinate
>> bound x-refp X))))
>>                        my-coords))
>>            (details (ly:grob-property grob 'details))
>>            (increment (assq-ref details 'increment))
>>            (contour-thickness (assq-ref details 'contour-thickness))
>>            (polygon-points-1 (map cons coords (map car exts)))
>>            (polygon-points-2 (map cons coords (map cdr exts)))
>>            (polygon-stencil
>>             (ly:round-polygon (append-reverse polygon-points-1
>> polygon-points-2)
>>                               contour-thickness
>>                               1
>>                               #f)))
>>       (let loop ((exts exts)
>>                  (coords coords)
>>                  (current (car coords))
>>                  (stil empty-stencil))
>>         (if (null? (cdr coords))
>>             (ly:stencil-translate
>>              (ly:stencil-add stil polygon-stencil)
>>              (cons (- (ly:grob-relative-coordinate grob x-refp X))
>>                    (- (ly:grob-relative-coordinate grob y-refp Y))))
>>             (let* ((t (/ (- current (car coords))
>>                          (- (cadr coords)
>>                             (car coords))))
>>                    (1-t (- 1 t))
>>                    (ext1 (car exts))
>>                    (ext2 (cadr exts))
>>                    (lo (+ (* 1-t (car ext1))
>>                           (* t (car ext2))))
>>                    (hi (+ (* 1-t (cdr ext1))
>>                           (* t (cdr ext2))))
>>                    (part (ly:line-interface::line grob current lo
>> current hi))
>>                    (new-stil (ly:stencil-add stil part))
>>                    (next (+ current increment))
>>                    (stay (<= next (cadr coords))))
>>               (loop (if stay exts (cdr exts))
>>                     (if stay coords (cdr coords))
>>                     next
>>                     new-stil))))))
>>
>> \layout {
>>    \context {
>>      \Voice
>>      \override ClusterSpanner.stencil = #cluster::dashed-fill
>>      \override ClusterSpanner.style = #'dashed-line
>>      \override ClusterSpanner.thickness = 1.5
>>      \override ClusterSpanner.dash-period = 0.6
>>      \override ClusterSpanner.details.increment = 0.45
>>      \override ClusterSpanner.details.contour-thickness = 0.2
>>    }
>> }
>>
>> %%%
>>
>> \paper {
>>    ragged-right = ##t
>> }
>>
>> \makeClusters {
>>    <c' c''>2 <d' a'> <g' f'''> <f g''>
>>    <c' c''>2 <d' a'> \break <g' f'''> <f g''>
>> }
>>
>>
>>
>> Best,
>> Jean
>>
>>
>
> --
> Do not meddle in the affairs of trombonists, for they are subtle and quick
> to anger.
>


-- 
Do not meddle in the affairs of trombonists, for they are subtle and quick
to anger.

Reply via email to