| @@ -700,7 +700,7 @@ Region::normalize ( void ) | |||||
| /**********/ | /**********/ | ||||
| /** Apply a (portion of) fade-out from /start/ to /end/ assuming a | |||||
| /** Apply a (portion of) fade from /start/ to /end/ assuming a | |||||
| * buffer size of /nframes/. /start/ and /end/ are relative to the | * buffer size of /nframes/. /start/ and /end/ are relative to the | ||||
| * given buffer, and /start/ may be negative. */ | * given buffer, and /start/ may be negative. */ | ||||
| void | void | ||||
| @@ -708,9 +708,14 @@ Region::Fade::apply ( sample_t *buf, Region::Fade::fade_dir_e dir, long start, n | |||||
| { | { | ||||
| // printf( "apply fade %s: start=%ld end=%lu\n", dir == Fade::Out ? "out" : "in", start, end ); | // printf( "apply fade %s: start=%ld end=%lu\n", dir == Fade::Out ? "out" : "in", start, end ); | ||||
| if ( ! nframes ) | |||||
| return; | |||||
| const nframes_t i = start > 0 ? start : 0; | const nframes_t i = start > 0 ? start : 0; | ||||
| const nframes_t e = end > nframes ? nframes : end; | const nframes_t e = end > nframes ? nframes : end; | ||||
| assert( i < nframes ); | |||||
| const float inc = increment(); | const float inc = increment(); | ||||
| float fi = ( i - start ) / (float)length; | float fi = ( i - start ) / (float)length; | ||||
| @@ -902,7 +907,8 @@ Region::read ( sample_t *buf, nframes_t pos, nframes_t nframes, int channel ) co | |||||
| fade = declick < _fade_out ? _fade_out : declick; | fade = declick < _fade_out ? _fade_out : declick; | ||||
| /* do fade out if necessary */ | /* do fade out if necessary */ | ||||
| if ( start + cnt + fade.length > r.end ) | |||||
| // if ( start + cnt + fade.length > r.end ) | |||||
| if ( start + fade.length > r.end ) | |||||
| { | { | ||||
| const nframes_t d = r.end - start; | const nframes_t d = r.end - start; | ||||