lilypond-user
[Top][All Lists]
Advanced

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

Re: Sustain pedal cautionary after line break


From: Pierre Perol-Schneider
Subject: Re: Sustain pedal cautionary after line break
Date: Tue, 2 Feb 2016 16:00:17 +0100

Hi Kieren, hi Caio et All,

Here's a trial to find a workaround avoiding the use of a TextSpanner:

\version "2.18.2"

\relative c'' {
  \set Staff.pedalSustainStyle = #'mixed
  \once\override Staff.SustainPedalLineSpanner.stencil =
     #ly:line-spanner::print
  \once\override Staff.SustainPedalLineSpanner.left-bound-info =
     #ly:line-spanner::calc-left-bound-info-and-text
  \once\override Staff.SustainPedalLineSpanner.right-bound-info =
     #ly:line-spanner::calc-right-bound-info
  \once\override Staff.SustainPedalLineSpanner.staff-padding = #3
  \once\override Staff.SustainPedalLineSpanner.bound-details =
     #`((right (Y . 0)(attach-dir . -1))
        (left (attach-dir . 2)(Y . 0))
        (left-broken
         (Y . 0)
         (attach-dir . 1)
         (text . ,
           #{
             \markup
             \normal-text
             \whiteout
             \pad-markup #.1
             \concat { "(" \musicglyph #"pedal.Ped" ".) " }
           #})))
    
  c1 c\sustainOn \break c c\sustainOff c
}

However, I tried to make a useful music function with it without success:

\version "2.18.2"

%% Cautionary pedal mark after a line break:
cautionPed = \markup {
  \normal-text
  \whiteout
  \pad-markup #.1
  \concat { "(" \musicglyph #"pedal.Ped" ".) " }
}

%% Span:
sustainPedalSpan =
#(define-music-function (parser location music) (ly:music?)
   (let ((elts (extract-named-music music '(NoteEvent EventChord))))
     (if (pair? elts)
         (let ((first-element (first elts))
               (last-element (last elts)))
           (set! (ly:music-property first-element 'articulation)
                 (cons (make-music 'SustainEvent 'span-direction -1)
                       (ly:music-property first-element 'articulation)))
           (set! (ly:music-property last-element 'articulation)
                 (cons (make-music 'SustainEvent 'span-direction 1)
                       (ly:music-property last-element 'articulation))))))
   #{
      \set Staff.pedalSustainStyle = #'mixed
      \once\override Staff.SustainPedalLineSpanner.stencil =
         #ly:line-spanner::print
      \once\override Staff.SustainPedalLineSpanner.left-bound-info =
         #ly:line-spanner::calc-left-bound-info-and-text
      \once\override Staff.SustainPedalLineSpanner.right-bound-info =
         #ly:line-spanner::calc-right-bound-info
      \once\override Staff.SustainPedalLineSpanner.staff-padding = #3
      \once\override Staff.SustainPedalLineSpanner.bound-details =
         #`((right (Y . 0)(attach-dir . -1))
            (left (attach-dir . 2)(Y . 0))
            (left-broken
             (Y . 0)
             (attach-dir . 1)
             (text . ,cautionPed)))
      $music
      \unset Staff.pedalSustainStyle
   #})

%% Syntax: \sustainPedSpan { notes }

%% Test:
\relative c'' {
  c1 \sustainPedalSpan { c \break c c } c


Any idea what's wrong?

Cheers,
Pierre



reply via email to

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