Hi Jean

That's great - I certainly now can get a greater range of dynamic than
before.  Thank you very much.

But I find that altering values in 'my-instrument-equalizer-alist' has
no effect at all.  How can I adjust the relative volumes of 2 different
instruments - say, 'violin' and 'cello'.  (I find that in the
fluidr3_gm sound font, the cello is far quieter than the other stringed
instruments.) 

David


On Mon, 2019-07-15 at 17:41 +0200, Jean ABOU SAMRA wrote:
> Hi David,
> Your problem is not with the instrument, it's with the dynamics
> themselves.
> The algorithm that affects a volume to a note does a scale between
> midiMinimumVolume and midiMaximumVolume that includes all dynamics.
> Mathematically, you can think:
> volume = midiMinimumVolume + (midiMaximumVolume -
> midiMinimumVolume)*dynamic
> 
> Let me try a diagram:
> 
> 0                       |        pppp   ppp   pp  p  mp  mf f ff fff
>   ffff  fffff sf  |                         1
> no sound                midiMinimumVolume                            
>                  midiMaximumVolume         maximum volume possible
> 
> 
> Here you set midiMinimumVolume to 0 or almost and midiMaximumVolume
> to 1, so if there is not enough difference for you, you need to
> influence the scale between the two in addition to minimum and
> maximum volume.
> 
> Taking a look at 
> http://lilypond.org/doc/v2.19/Documentation/internals/dynamic_005fperformer
> suggests to set the dynamicAbsoluteVolumeFunction property. You will
> find its default in scm/midi.scm:
> 
> ;; define factor of total volume per dynamic marking(define-session-
> public absolute-volume-alist '())(set! absolute-volume-alist     
> (append       '(         ("sf" . 1.00)         ("fffff" . 0.95)     
>    ("ffff" . 0.92)         ("fff" . 0.85)         ("ff" . 0.80)     
>    ("f" . 0.75)         ("mf" . 0.68)         ("mp" . 0.61)       
>  ("p" . 0.55)         ("pp" . 0.49)         ("ppp" . 0.42)       
>  ("pppp" . 0.34)         ("ppppp" . 0.25)         )       absolute-
> volume-alist))
> (define-public (default-dynamic-absolute-volume s)  (assoc-get s
> absolute-volume-alist))
> so now you can modify it, for example:
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> \version "2.19.83"
> 
> 
> #(define (my-dynamic-absolute-volume-function dynamic-name)
>  (assoc-get dynamic-name
>   '(
>      ("sf" . 1.00)
>      ("fffff" . 0.95)
>      ("ffff" . 0.92)
>      ("fff" . 0.85)
>      ("ff" . 0.95) ;; was 0.80
>      ("f" . 0.75)
>      ("mf" . 0.68)
>      ("mp" . 0.61)
>      ("p" . 0.55)
>      ("pp" . 0.10) ;; was 0.49
>      ("ppp" . 0.42)
>      ("pppp" . 0.34)
>      ("ppppp" . 0.25)
>    )))
> 
> 
> \score {
>  \new Staff \with { midiInstrument = "trumpet" } {
>    \set Score.midiMinimumVolume = 0.0
>    \set Score.midiMaximumVolume = 1.0
>    \set Score.dynamicAbsoluteVolumeFunction = #my-dynamic-absolute-
> volume-function
>    a'8\pp b' cis'' d'' e''-.\ff d''-. cis''-. b'-. a'
>  }
>  \midi { }
> \layout { }
> }
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> You understand that default 'piano' is not so piano because we have
> to go to ppppp.
> By adjusting the values in that associative list, you can play with
> dynamics and get the exact contrast you would like.
> Hope that helps.Kind regards,Jean Abou Samra.
> > Le 15 juil. 2019 à 16:16, David Sumbler <da...@aeolia.co.uk> a
> > écrit :
> > 
> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > \version "2.19.82"
> > 
> > #(define my-instrument-equalizer-alist '())
> > 
> > #(set! my-instrument-equalizer-alist
> >   (append
> >    '(
> >      ("trumpet" . (0.01 . 0.99)))
> >    my-instrument-equalizer-alist))
> > 
> > #(define (my-instrument-equalizer s)
> >   (let ((entry (assoc s my-instrument-equalizer-alist)))
> >     (if entry
> >       (cdr entry))))
> > 
> > \score {
> >   \new Staff \with { midiInstrument = "trumpet" } {
> > %    \set Score.midiMaximumVolume = #1
> > %    \set Score.midiMinimumVolume = #0
> >     \set Score.instrumentEqualizer = #my-instrument-equalizer
> >     a'8\pp b' cis'' d'' e''-.\ff d''-. cis''-. b'-. a'
> >   }
> >   \midi { }
> > }
> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > 
> > Can somebody explain how I can control the absolute minimum and
> > maximum
> > values of individual instruments in midi?
> > 
> > In the above snippet, I expect to find the first bar almost
> > inaudible
> > and the second bar extremely loud.  However, I find that the
> > difference
> > between the pp section and the ff is quite limited.  If I reduce
> > the
> > supposed maximum volume of the trumpet to, say, 0.5, then the pp
> > will
> > indeed be very quiet, but when I restore the second parameter to
> > 0.99
> > as here, then the pp passage is much louder than previously.
> > 
> > If I uncomment the Score.midiMaximumVolume line and the following
> > one,
> > it makes little difference.  The Internals Reference states that
> > valid
> > values for these 2 parameters are numbers between 0 and 1.
> >  However, if
> > I set midiMaximumVolume to 2, I find that the pp and the ff
> > sections
> > have the same volume as each other.  Further increases in
> > midiMaximumVolume do not seem to make any difference.
> > 
> > In every case, the total dynamic range is considerably less than I
> > would like.  How can I extend the dynamic range beyond the limited
> > range I can currently get?
> > 
> > David
> > 
> > 
> > _______________________________________________
> > lilypond-user mailing list
> > lilypond-user@gnu.org
> > https://lists.gnu.org/mailman/listinfo/lilypond-user


_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to