| 40 | } |
| 41 | |
| 42 | inline double blamp(double t, const double dt) |
| 43 | { |
| 44 | if (t < dt) |
| 45 | { |
| 46 | t = t / dt - 1.0; |
| 47 | return -1.0 / 3.0 * square(t) * t; |
| 48 | } |
| 49 | else if (t > 1.0 - dt) |
| 50 | { |
| 51 | t = (t - 1.0) / dt + 1.0; |
| 52 | return 1.0 / 3.0 * square(t) * t; |
| 53 | } |
| 54 | else return 0.0; |
| 55 | } |
| 56 | |
| 57 | // PolyBLEP, a quasi-bandlimited oscillator |
| 58 | class lab::PolyBlepImpl |