|
| 1 | +# DSP.js |
| 2 | + |
| 3 | +DSP.js is a comprehensive digital signal processing library for javascript. |
| 4 | +It includes many functions for signal analysis and generation, including |
| 5 | +Oscillators (sine, saw, square, triangle), Window functions (Hann, Hamming, etc), |
| 6 | +Envelopes (ADSR), IIR Filters (lowpass, highpass, bandpass, notch), FFT and DFT |
| 7 | +transforms, Delays, Reverb. |
| 8 | + |
| 9 | +## Modules |
| 10 | + |
| 11 | +* `DFT(bufferSize, sampleRate)`: Discrete Fourier Transform |
| 12 | + * Usage: |
| 13 | + ```js |
| 14 | + var dft = new DFT(1024, 44100); |
| 15 | + dft.forward(signal); |
| 16 | + var spectrum = dft.spectrum; |
| 17 | + ``` |
| 18 | + |
| 19 | +* `FFT(bufferSize, sampleRate)`: Fast Fourier Transform |
| 20 | + * Usage: |
| 21 | + ```js |
| 22 | + var fft = new FFT(2048, 44100); |
| 23 | + fft.forward(signal); |
| 24 | + var spectrum = fft.spectrum; |
| 25 | + ``` |
| 26 | + |
| 27 | +* `Oscillator(waveform, frequency, amplitude, bufferSize, sampleRate)`: Signal Generator |
| 28 | + * Sine wave |
| 29 | + * Square wave |
| 30 | + * Saw wave |
| 31 | + * Triangle wave |
| 32 | + * Usage: |
| 33 | + ```js |
| 34 | + var osc = new Oscillator(SINEWAVE, 440, 1, 2048, 22050); |
| 35 | + osc.generate(); |
| 36 | + var signal = osc.signal; |
| 37 | + ``` |
| 38 | + |
| 39 | +* `ADSR(attack, decay, sustainLevel, sustain, release, sampleRate)`: Attack-Decay-Sustain-Release Envelope |
| 40 | + * Usage: |
| 41 | + ```js |
| 42 | + var envelope = new ADSR(0.01, 0.1, 0.5, 0.1, 0.2, 44100); |
| 43 | + envelope.process(signal); |
| 44 | + ``` |
| 45 | + |
| 46 | +* `IIRFilter(filter, cutoff, sampleRate)`: Infinite Impulse Response Filters |
| 47 | + * Low Pass Filter |
| 48 | + * High Pass Filter |
| 49 | + * Usage: |
| 50 | + ``` |
| 51 | + var filter = IIRFilter(LOWPASS, 200, 44100); |
| 52 | + filter.process(signal); |
| 53 | + ``` |
| 54 | + |
| 55 | +* `MultiDelay(maxDelayInSamplesSize, delayInSamples, masterVolume, delayVolume)`: Delay which feeds back its own delayed signal |
| 56 | + * Usage: |
| 57 | + ```js |
| 58 | + var delay = MultiDelay(44100*5, 44100*1, 1.0, 0.6); |
| 59 | + delay.process(signal); |
| 60 | + ``` |
| 61 | + |
| 62 | +* `Reverb(maxDelayInSamplesSize, delayInSamples, masterVolume, mixVolume, delayVolume, dampFrequency)`: Reverb |
| 63 | + * Usage: |
| 64 | + ```js |
| 65 | + var reverb = Reverb(20000, 6500, 0.8, 0.5, 0.9, 4500); |
| 66 | + reverb.process(signal); |
| 67 | + ``` |
0 commit comments