Showing the changes to LEAF/Src_cpp/leaf-math.cpp (1 of 8 files). Show all
Unified · Split
| @@ -231,4 +231,34 @@ float LEAF_midiToFrequency(float f) · 230 unmodified lines | ||
| 231 | 231 | if( f <= -1500.0f ) return (0); |
| 232 | 232 | else if( f > 1499.0f ) return (LEAF_midiToFrequency(1499.0f)); |
| 233 | 233 | else return ( powf(2.0f, (f - 69.0f) / 12.0f) * 440.0f ); |
| 234 | −} | |
| 234 | +} | |
| 235 | + | |
| 236 | + | |
| 237 | +// alpha, [0.0, 1.0] | |
| 238 | +float LEAF_interpolate_hermite (float A, float B, float C, float D, float alpha) | |
| 239 | +{ | |
| 240 | + alpha = LEAF_clip(0.0f, alpha, 1.0f); | |
| 241 | + | |
| 242 | + float a = -A/2.0f + (3.0f*B)/2.0f - (3.0f*C)/2.0f + D/2.0f; | |
| 243 | + float b = A - (5.0f*B)/2.0f + 2.0f*C - D / 2.0f; | |
| 244 | + float c = -A/2.0f + C/2.0f; | |
| 245 | + float d = B; | |
| 246 | + | |
| 247 | + return a*alpha*alpha*alpha + b*alpha*alpha + c*alpha + d; | |
| 248 | +} | |
| 249 | + | |
| 250 | +// alpha, [0.0, 1.0] | |
| 251 | +float LEAF_interpolation_linear (float A, float B, float alpha) | |
| 252 | +{ | |
| 253 | + alpha = LEAF_clip(0.0f, alpha, 1.0f); | |
| 254 | + | |
| 255 | + float omAlpha = 1.0f - alpha; | |
| 256 | + | |
| 257 | + // First 1/2 of interpolation | |
| 258 | + float out = A * omAlpha; | |
| 259 | + | |
| 260 | + out += B * alpha; | |
| 261 | + | |
| 262 | + return out; | |
| 263 | +} | |
| 264 | + | |