Not signed in (Sign In)

Vanilla 1.1.9 is a product of Lussumo. More Information: Documentation, Community Support.

    •  
      CommentAuthorSancho
    • CommentTimeJan 30th 2010
     
    Hi BreakfastQuay team,

    I started a new project using your amAZing library but I experience some difficult to clearly understand few things.

    I usually get a "*** WARNING: increment -21 <= 0, rounding to zero", what does it mean ?
    Example given at 44100 sample rate with a stretch ratio 0,38 and working offline (with all other default options).

    My second question is, with a ratio strictly equal to 1.0 (double value, like in your API) when I 'study' next 'process' a buffer of 22050 samples, I get an output response length around 22160.
    Is it 'normal' ? (I suppose yes because timestretching is not an exact 'science' ;)
    But, does this error range approximation grows with stretch ratio ?
    Sometime I received lot of "Buffer overrun on output" I can't handle, and 'vice et versa' lot of missing precious frames comparing to my output length forecasts (buffer underrun for me).

    Thank's a lot for your great great job with this (vital to me) lib :)

    Regards,

    Christophe
    •  
      CommentAuthorbq
    • CommentTimeFeb 7th 2010
     

    Christophe,

    First, the "rounding to zero" warning means that the variable stretch factor calculation has not been able to squash a section (typically a short one between transients) as much as it needed to. Usually, the discrepancy will be accounted for in another part of the audio so that the overall factor works out correct.

    On the whole we have used the term "warning" for notification of circumstances that on their own will not lead to audible glitches. Sometimes they might cascade and cause audible problems, but at that point you would expect to see something labelled "error" rather than warning in the output. In other words, warnings in the output should be safe to ignore unless they are followed by errors.

    With regard to your second question, although it is possible for the output to be a different length from the input when run at ratio 1.0, I would expect the actual contents to be the same apart from some additional zero frames at the end resulting from rounding to an internal processing block size. Calling setExpectedInputDuration appropriately should allow the stretcher to chop off any spare samples and return the exact duration. If this is not the case, that sounds like a bug. Perhaps also compare the output you obtain from the command-line utility included with Rubber Band against that from your own program -- certainly the utility does its best to return exactly the right number of samples, at least in offline mode.

    In real-time mode, discrepancies between expected and actual output duration of up to a few hundred samples are unavoidable -- but processing a longer input should not normally give a larger discrepancy.

    -bq