13
0

increase number of steps in xfade curves (where applicable) from about 9 to 32

This commit is contained in:
Paul Davis 2014-02-26 18:44:54 -05:00
parent cd68ae78f9
commit 230afc09ff

View File

@ -987,6 +987,8 @@ AudioRegion::set_fade_in (FadeShape shape, framecnt_t len)
boost::shared_ptr<Evoral::ControlList> c2 (new Evoral::ControlList (FadeInAutomation)); boost::shared_ptr<Evoral::ControlList> c2 (new Evoral::ControlList (FadeInAutomation));
boost::shared_ptr<Evoral::ControlList> c3 (new Evoral::ControlList (FadeInAutomation)); boost::shared_ptr<Evoral::ControlList> c3 (new Evoral::ControlList (FadeInAutomation));
const int num_steps = min ((framecnt_t) 64, len);
_fade_in->freeze (); _fade_in->freeze ();
_fade_in->clear (); _fade_in->clear ();
_inverse_fade_in->clear (); _inverse_fade_in->clear ();
@ -999,15 +1001,15 @@ AudioRegion::set_fade_in (FadeShape shape, framecnt_t len)
break; break;
case FadeFast: case FadeFast:
generate_db_fade (_fade_in.val(), len, 10, -60); generate_db_fade (_fade_in.val(), len, num_steps, -60);
reverse_curve (c1, _fade_in.val()); reverse_curve (c1, _fade_in.val());
_fade_in->copy_events (*c1); _fade_in->copy_events (*c1);
generate_inverse_power_curve (_inverse_fade_in.val(), _fade_in.val()); generate_inverse_power_curve (_inverse_fade_in.val(), _fade_in.val());
break; break;
case FadeSlow: case FadeSlow:
generate_db_fade (c1, len, 10, -1); // start off with a slow fade generate_db_fade (c1, len, num_steps/2, -1); // start off with a slow fade
generate_db_fade (c2, len, 10, -80); // end with a fast fade generate_db_fade (c2, len, num_steps/2, -80); // end with a fast fade
merge_curves (_fade_in.val(), c1, c2); merge_curves (_fade_in.val(), c1, c2);
reverse_curve (c3, _fade_in.val()); reverse_curve (c3, _fade_in.val());
_fade_in->copy_events (*c3); _fade_in->copy_events (*c3);
@ -1015,8 +1017,8 @@ AudioRegion::set_fade_in (FadeShape shape, framecnt_t len)
break; break;
case FadeConstantPower: case FadeConstantPower:
for (int i = 0; i < 9; ++i) { for (int i = 0; i < num_steps; ++i) {
float dist = (float) i / 10.0f; float dist = (float) i / (num_steps+1.0);
_fade_in->fast_simple_add (len*dist, sin (dist*M_PI/2)); _fade_in->fast_simple_add (len*dist, sin (dist*M_PI/2));
} }
_fade_in->fast_simple_add (len, 1.0); _fade_in->fast_simple_add (len, 1.0);
@ -1029,7 +1031,6 @@ AudioRegion::set_fade_in (FadeShape shape, framecnt_t len)
_fade_in->fast_simple_add (0.5*len, 0.6); _fade_in->fast_simple_add (0.5*len, 0.6);
//now generate a fade-out curve by successively applying a gain drop //now generate a fade-out curve by successively applying a gain drop
const float breakpoint = 0.7; //linear for first 70% const float breakpoint = 0.7; //linear for first 70%
const int num_steps = 9;
for (int i = 2; i < num_steps; i++) { for (int i = 2; i < num_steps; i++) {
float coeff = (1.0-breakpoint); float coeff = (1.0-breakpoint);
for (int j = 0; j < i; j++) { for (int j = 0; j < i; j++) {