From fbe3240d7151345e819b0bd9ed3e0d3d4f0c2355 Mon Sep 17 00:00:00 2001 From: stagas Date: Fri, 21 Nov 2014 23:53:47 +0200 Subject: [PATCH] add pulse & pwm --- index.js | 72 ++++++++++++++++++++++++++++++-------------------------- test.js | 23 +++++++++--------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/index.js b/index.js index 6df4250..0c551a2 100644 --- a/index.js +++ b/index.js @@ -1,34 +1,38 @@ - -/** - * @module osc - * @author stagas - * @org opendsp - * @desc oscillators - * @license mit - */ - -var tau = 2 * Math.PI; - -export function sin(t, f){ - return Math.sin(f * t * tau); -} - -export function saw(t, f){ - return 1 - 2 * (t % (1 / f)) * f; -} - -export function ramp(t, f){ - return 2 * (t % (1 / f)) * f - 1; -} - -export function tri(t, f){ - return Math.abs(1 - (2 * t * f) % 2) * 2 - 1; -} - -export function sqr(t, f){ - return (t*f % 1/f < 1/f/2) * 2 - 1; -} - -export function noise(){ - return Math.random() * 2 - 1; -} + +/** + * @module osc + * @author stagas + * @org opendsp + * @desc oscillators + * @license mit + */ + +var tau = 2 * Math.PI; + +export function sin(t, f){ + return Math.sin(f * t * tau); +} + +export function saw(t, f){ + return 1 - 2 * (t % (1 / f)) * f; +} + +export function ramp(t, f){ + return 2 * (t % (1 / f)) * f - 1; +} + +export function tri(t, f){ + return Math.abs(1 - (2 * t * f) % 2) * 2 - 1; +} + +export function sqr(t, f){ + return (t*f % 1/f < 1/f/2) * 2 - 1; +} + +export function pulse(t, f, w){ + return (t*f % 1/f < 1/f/2*w) * 2 - 1; +} + +export function noise(){ + return Math.random() * 2 - 1; +} diff --git a/test.js b/test.js index 1ae76c1..d38eaf3 100644 --- a/test.js +++ b/test.js @@ -1,11 +1,12 @@ - -/** - * test - */ - -import { sin, saw, ramp, tri, sqr, noise } from './index'; - -export function dsp(t){ - //return (sqr(t, .1) + sin(t, .1)) / 3; - return [sin, saw, ramp, tri, sqr, noise][2*t%6|0](t, 300) * 0.4; -} + +/** + * test + */ + +import { sin, saw, ramp, tri, sqr, pulse, noise } from './index'; + +export function dsp(t){ + //return pulse(t, 70, sin(t, .1)+1); + //return (sqr(t, .1) + sin(t, .1)) / 3; + return [sin, saw, ramp, tri, sqr, pulse, noise][2*t%6|0](t, 300, 0.5) * 0.4; +}