lilypond-user
[Top][All Lists]
Advanced

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

Re:Levelling hairpins


From: David Sumbler
Subject: Re:Levelling hairpins
Date: Sat, 14 Feb 2015 12:55:30 +0000

> From: Peter Gentry <address@hidden>
> Date: Fri, 13 Feb 2015 20:53:15 -0000

> This is too well known to need an example, indeed one is given in the
> documentation
> > 
> http://www.lilypond.org/doc/v2.18/Documentation/notation/expressive-marks-attached-to-notes#dynamics
> 
> where the solution is discussed
> > 
> A Dynamics context is available to engrave dynamics on their own
> horizontal line. Use spacer rests to indicate timing. (Notes in a
> Dynamics context will also take up musical time, but will not be
> engraved.) The Dynamics context can usefully contain some other items
> such as text scripts, text spanners, and piano pedal marks. 
> 
> Richard

The method shown in the Notation document (see link above) works, but
needs some trial and error to find what is the minimum value of
staff-padding which achieves the desired result.

What I was hoping for was some method of telling Lilypond to position 2
(or more) dynamics at the level of whichever one of them needs to be
furthest from the stave.  I dare say that this can be done using Scheme,
although as yet I am too inexperienced to know how to do it.

I like David G's solution (below), and shall probably adopt it - thanks,
David.

Regarding the Dynamics context: I agree with Peter that this is too
cumbersome for adjusting the occasional alignment problem.  In any case,
the piece I am currently working on is for a single instrument
(marimba), and having the dynamics in a line of music all at the same
level would simply look wrong in many cases.

I have used a Dynamics context in a piece which involved a piano.  This
is still unsatisfactory, I find.  For instance, the following artificial
example:

\version "2.18.0"

<< \relative c' { a4 c e a | c a e c| }
   \\
   \new Dynamics {R1\p | R1\f }
   \\
   \new Staff \relative c { \clef "bass" a4 e' a c | e c e a, | }
>>

<< \relative c' { a4\p c e a | c a e c| }
   \\
   \new Staff \relative c { \clef "bass" a4 e' a c | e^\f c e a, | }
   \break
>>

The first line of output shows what happens when using a Dynamics
context; the second shows more or less how I would actually want it to
appear, although putting the dynamics in different staves is obviously
very unsatisfactory and would not always have the desired result in any
case.

It's a shame that Lilypond does not (so far as I know) have any way to
(a) associate one mark with another for positioning purposes
(b) associate dynamics with two staves, and use some sensible algorithm
for vertically spacing the dynamics between the two staves and their
contents.

David

> > From: David Stephen Grant <address@hidden>
> > Date: Fri, 13 Feb 2015 21:57:54 +0100
> > 
> > This is how I deal with it. Not exactly automatic, but works well
> > for me :-)

> > \version "2.19.15"
> > 
> > 
> > dynPadYOn = 
> > #(define-music-function (parser location padding)(number?)
> >    #{
> >      \override DynamicLineSpanner.staff-padding = $padding
> >    #})
> > 
> > 
> > dynPadYOff = 
> > #(define-music-function (parser location)()
> >    #{
> >      \revert DynamicLineSpanner.staff-padding
   #}
> > 
> > testMusic = {
> >   c'4 g c'\< a'\f | c'4\> g c' a'\p
> > }
> > 
> > 
> > {
> >   \testMusic | \break
> >   \dynPadYOn #4
> >   \testMusic | \break
> >   \dynPadYOff
> >   \testMusic
> > }






reply via email to

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