Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // phase in range 0 <= phase < 1
- // pwm in range -1 <= pwm <= 1
- dt = frequency / samplerate
- saw(phase, dt) {
- return phase * 2 - 1 - polyBlep(phase, dt)
- }
- pulse(phase, dt, pwm = 0) {
- return saw(phase) - saw(wrap(phase + (pwm + 1 / 2))) + pwm
- }
- polyBelp(phase, dt) {
- if (phase < dt) {
- pdt = phase / dt
- return (pdt * 2) - (pdt * pdt) - 1
- }
- if (phase > 1 - dt) {
- pdt = (phase - 1) / dt
- return (pdt * pdt) + (pdt * 2) + 1
- }
- return 0
- }
- wrap(value) {
- while (value >= 1) {
- value -= 1
- }
- while (value < 0) {
- value += 1
- }
- return value
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement