Knute Snortum <[email protected]> writes:
> I am getting my old friend the "ambiguous (de)crescendo" error. I can see
> why this would happen in the snippet below. I have defined a dynamic of
> "più f" and LilyPond doesn't know how to crescendo from a "f" to it.
>
> My usual way of dealing with this is to assign a MIDI volume to my new
> dynamic. In this case forte = .75 so I am trying to assign .77 to the "più
> f" but I don't know how to do it. Any suggestions?
>
> %%% BEGIN
> \version "2.18.2"
>
> piuFMarkup = \markup { \normal-text { \italic "più" } \dynamic "f" }
> piuF = #(make-dynamic-script #{ \piuFMarkup #} )
>
> % Neither of the following prevent the MIDI error
>
> %{
> #(define (myDynamics dynamic)
> (if (equal? dynamic \piuFMarkup )
> 0.77
> (default-dynamic-absolute-volume dynamic)))
> %}
>
> #(define (myDynamics dynamic)
> (if (equal? dynamic "piùf" )
> 0.77
> (default-dynamic-absolute-volume dynamic)))
>
> % \f = MIDI loudnes .75, so crescendo to .77
>
> \score {
> \relative c' {
> c4 \f d \< e f | g1 \piuF
> }
> \layout {}
> \midi {}
> }
> %%% END
The manual has a working example in
<URL:http://www.lilypond.org/doc/v2.18/Documentation/notation/controlling-midi-dynamics#dynamic-marks>.
You need to set dynamicAbsoluteVolumeFunction for this to work. Just
defining some function myDynamics and hoping that LilyPond will
magically know what to do with it is not enough.
The following works:
%%% BEGIN
\version "2.18.2"
piuFMarkup = \markup { \normal-text { \italic "più" } \dynamic "f" }
piuF = #(make-dynamic-script piuFMarkup)
#(define (myDynamics dynamic)
(if (equal? dynamic piuFMarkup )
0.77
(default-dynamic-absolute-volume dynamic)))
% \f = MIDI loudnes .75, so crescendo to .77
\score {
\relative c' {
c4 \f d \< e f | g1 \piuF
}
\layout {}
\midi {
\context {
\Score
dynamicAbsoluteVolumeFunction = #myDynamics
}
}
}
--
David Kastrup
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user