/**
 * Iterator producing an exponential curve (with adjustable curvature)
 * between `start` and `end` values over `num` steps. This is the
 * exponential equivalent of  line .
 *
 *  remarks Since `start` is the first value emitted, the `end` value is only
 * reached in the `num+1`th step.
 *
 * The curvature can be controlled via the logarithmic `rate` param.
 * Recommended range [0.0001 - 10000] (curved -> linear). Default: 0.1
 *
 * Similar functionality (w/ more options) is availble here:
 *  {@link @thi.ng/dsp#curve} .
 *
 *  example param start param end param steps param falloff export function * curve ( start , end , steps = 10 , rate = 0.1 ) { const c = Math . exp ( - Math . log ( ( Math . abs ( end - start ) + rate ) / rate ) / steps ) ; const offset = ( start < end ? end + rate : end - rate ) * ( 1 - c ) ; steps > 0 && ( yield start ) ; for ( let x = start ; steps -- > 0 ; ) { yield ( x = offset + x * c ) ; } }