lilypond-user
[Top][All Lists]
Advanced

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

Re: Controlling hairpin length - revisited!


From: Simon Albrecht
Subject: Re: Controlling hairpin length - revisited!
Date: Thu, 13 Oct 2016 23:54:26 +0200

On 13.10.2016 14:41, David Sumbler wrote:
On Wed, 2016-10-12 at 14:10 -0400, Kieren MacMillan wrote:
Hi David,

But I realise that often what I need in order to get satisfactory
hairpins is more space between the note heads, and simply moving
the
ends of the hairpin does not reposition the relevant notes.
Have you tried adjusting the minimum-length?

%%%  SNIPPET BEGINS
\version "2.18.2"
\language "english"

after =
#(define-music-function (parser location t e m)
      (ly:duration? ly:music? ly:music?)
      #{
          \context Bottom <<
              #m
              { \skip $t <> -\tweak extra-spacing-width #empty-
interval $e }
          >>
      #})

testing = \relative e'' {
   \override Hairpin.minimum-length = #5
   e8 cs ds d \after 4 \> \after 4 \mf cs2\< ~ cs4 d8(\p cs)
}

\score { \testing }
%%%  SNIPPET ENDS

Hope that helps!
Kieren.
Thanks, that's brilliant.  With this and Hairpin.shorten-pair I should
be able to solve most or all of the problems I often find with
hairpins.

I have read all the material in the list archive relating to this
function.
Which function? \after?

after =
%% create a music function with three arguments and assign it to the variable `after`
#(define-music-function (parser location t e m)
   ;; give the types of the three arguments as predicate procedures
   (ly:duration? ly:music? ly:music?)
   ;; have the expression in #{#} evaluated by the LilyPond parser
   #{
     %% Bottom is a kind of alias usually referring to Voice.
     %% In this case, it’s there to prevent creating new Voices,
     %% so the simultaneous music <<>> remains in one Voice.
     \context Bottom <<
%% first expression in the simultaneous music: the last argument passed to the function
       #m

       %% second expression:
%% \skip $t creates a skip of the duration given as first argument of the function
       %% <> is an empty chord with no duration
%% the tweak prevents the spacing to be distorted by the inserted item $e %% empty-interval is defined in scm/lily-library.scm as #'(+inf.0 . -inf.0), %% i.e. actually an infinitely small interval. Maybe #'(0 . 0) would work just as well,
       %% but it might also cause errors or unwanted behaviour.
       { \skip $t <> -\tweak extra-spacing-width #empty-interval $e }
     >>
   #})

HTH, Simon



reply via email to

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