Advertisement
Guest User

Untitled

a guest
Jun 15th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. // phase in range 0 <= phase < 1
  2. // pwm in range -1 <= pwm <= 1
  3.  
  4. dt = frequency / samplerate
  5.  
  6. saw(phase, dt) {
  7. return phase * 2 - 1 - polyBlep(phase, dt)
  8. }
  9.  
  10. pulse(phase, dt, pwm = 0) {
  11. return saw(phase) - saw(wrap(phase + (pwm + 1 / 2))) + pwm
  12. }
  13.  
  14. polyBelp(phase, dt) {
  15. if (phase < dt) {
  16. pdt = phase / dt
  17. return (pdt * 2) - (pdt * pdt) - 1
  18. }
  19. if (phase > 1 - dt) {
  20. pdt = (phase - 1) / dt
  21. return (pdt * pdt) + (pdt * 2) + 1
  22. }
  23. return 0
  24. }
  25.  
  26. wrap(value) {
  27. while (value >= 1) {
  28. value -= 1
  29. }
  30. while (value < 0) {
  31. value += 1
  32. }
  33. return value
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement