X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faudio-item.cc;h=201e8fd98e7cf4939c1de6b4a7e8ca64efc540d6;hb=bdd8f85f175a105f83d082a24f838b35c935709b;hp=1cbf7765b70f338ff82a5b9ed004ddf47c8eebbd;hpb=f93e4199873c91ae32f0e84a610d14853dc379df;p=lilypond.git diff --git a/lily/audio-item.cc b/lily/audio-item.cc index 1cbf7765b7..201e8fd98e 100644 --- a/lily/audio-item.cc +++ b/lily/audio-item.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -79,9 +79,11 @@ Audio_dynamic::Audio_dynamic () { } -Audio_span_dynamic::Audio_span_dynamic () +Audio_span_dynamic::Audio_span_dynamic (Real min_volume, Real max_volume) { grow_dir_ = CENTER; + min_volume_ = min_volume; + max_volume_ = max_volume; } void @@ -131,13 +133,16 @@ Audio_span_dynamic::render () return; } - Real delta_v = grow_dir_ * 0.1; - Real start_v = dynamics_[0]->volume_; if (dynamics_.back ()->volume_ < 0) - dynamics_.back ()->volume_ = max (min (start_v + grow_dir_ * 0.25, 1.0), 0.1); + { + // The dynamic spanner does not end with an explicit dynamic script + // event. Adjust the end volume by at most 1/4 of the available + // volume range in this case. + dynamics_.back ()->volume_ = max (min (start_v + grow_dir_ * (max_volume_ - min_volume_) * 0.25, max_volume_), min_volume_); + } - delta_v = dynamics_.back ()->volume_ - dynamics_[0]->volume_; + Real delta_v = dynamics_.back ()->volume_ - dynamics_[0]->volume_; Moment start = dynamics_[0]->get_column ()->when ();