Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. float t = phase / period; //normalized position in period
  2. float dt = deltaPhase / period; // normalized phasestep
  3.  
  4. float polyBLAMP = 0.0f;
  5. if (t < dt) {
  6. float d = (t)/dt; // fractional delay
  7. polyBLAMP = (3.0f*powf(d,5.0f)-10.0f*powf(d,4.0f)+40.0f*powf(d,2.0f)-60.0f*d/2.0f+28.0f)/120.0f;
  8. } else if (t < dt*2.0f) {
  9. float d = (t-dt)/dt;
  10. polyBLAMP = (-powf(d,5.0f)+5.0f*powf(d,4.0f)-10.0f*powf(d,3.0f)+10.0f*powf(d,2.0f)-5.0f*d+1.0f)/120.0f;
  11. } else if (t > 1.0f - dt) {
  12. float d = (dt-1.0f+t)/dt;
  13. polyBLAMP = (-3.0f*powf(d,5.0f)+5.0f*powf(d,4.0f)+10.0f*powf(d,3.0f)+10.0f*powf(d,2.0f)+5.0f*d+1.0f)/120.0f;
  14. } else if (t > 1.0f - dt*2.0f) {
  15. float d = (2.0f*dt-1.0f+t)/dt;
  16. polyBLAMP = powf(d,5.0f)/120.0f;
  17. }
  18. float output = osc(phase)+polyBLAMP;
  19.  
  20. public static double blep(double p, double dp) {
  21. double y = 0;
  22. if (0 <= p && p < 2 * dp) {
  23. final double x = p / dp;
  24. double u = 2 - x;
  25. u *= u;
  26. u *= u;
  27. y += u;
  28. if (p < dp) {
  29. double v = 1 - x;
  30. v *= v;
  31. v *= v;
  32. y -= 4 * v;
  33. }
  34. }
  35. p = 1 - p;
  36. if (0 <= p && p < 2 * dp) {
  37. final double x = p / dp;
  38. double u = 2 - x;
  39. u *= u;
  40. u *= u;
  41. y -= u;
  42. if (p < dp) {
  43. double v = 1 - x;
  44. v *= v;
  45. v *= v;
  46. y += 4 * v;
  47. }
  48. }
  49. return y / 12;
  50. }
  51.  
  52. public static double saw(double p, double dp) {
  53. double v = 2 * p - 1;
  54. v += blep(p, dp);
  55. return v;
  56. }
  57.  
  58. double y = saw(phi, dphi);
  59. phi += d;
  60. phi -= Math.floor(phi);
  61. y -= saw(phi, dphi);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement