All Projects → oramics → dsp-kit

oramics / dsp-kit

Licence: MIT license
A digital signal processing library in Javascript

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to dsp-kit

DTMF-Decoder
A Java program to implement a DMTF Decoder.
Stars: ✭ 28 (-12.5%)
Mutual labels:  dsp, fourier, fft, digital-signal-processing
math
Useful m-scripts for DSP (CIC, FIR, FFT, Fast convolution, Partial Filters etc.)
Stars: ✭ 15 (-53.12%)
Mutual labels:  dsp, fft, digital-signal-processing
intfftk
Fully pipelined Integer Scaled / Unscaled Radix-2 Forward/Inverse Fast Fourier Transform (FFT) IP-core for newest Xilinx FPGAs (Source language - VHDL / Verilog). GNU GPL 3.0.
Stars: ✭ 43 (+34.38%)
Mutual labels:  dsp, fft, digital-signal-processing
dsp-theory
Theory of digital signal processing (DSP): signals, filtration (IIR, FIR, CIC, MAF), transforms (FFT, DFT, Hilbert, Z-transform) etc.
Stars: ✭ 643 (+1909.38%)
Mutual labels:  dsp, fft, digital-signal-processing
Pitch Detection
collection of O(NlogN) pitch detection implementations
Stars: ✭ 335 (+946.88%)
Mutual labels:  dsp, fft
RpiANC
Active Noise Control on Raspberry Pi
Stars: ✭ 49 (+53.13%)
Mutual labels:  dsp, digital-signal-processing
Dsp Theory
Theory of digital signal processing (DSP): signals, filtration (IIR, FIR, CIC, MAF), transforms (FFT, DFT, Hilbert, Z-transform) etc.
Stars: ✭ 437 (+1265.63%)
Mutual labels:  dsp, fft
Fpga Fft
A highly optimized streaming FFT core based on Bailey's 4-step large FFT algorithm
Stars: ✭ 45 (+40.63%)
Mutual labels:  dsp, fft
Surge
A Swift library that uses the Accelerate framework to provide high-performance functions for matrix math, digital signal processing, and image manipulation.
Stars: ✭ 4,945 (+15353.13%)
Mutual labels:  dsp, fft
dsp
Header only C++14 library containing various digital signal processing utilities.
Stars: ✭ 30 (-6.25%)
Mutual labels:  dsp, digital-signal-processing
ooura
Javascript port of Ooura FFT implementation
Stars: ✭ 23 (-28.12%)
Mutual labels:  dsp, fft
lsp-dsp-lib
DSP library for signal processing
Stars: ✭ 37 (+15.63%)
Mutual labels:  dsp, fft
tinyspec-cling
tiny spectral synthesizer with livecoding support
Stars: ✭ 31 (-3.12%)
Mutual labels:  fft, phase-vocoder
Spectro
🎶 Real-time audio spectrogram generator for the web
Stars: ✭ 383 (+1096.88%)
Mutual labels:  dsp, fft
RTspice
A real-time netlist based audio circuit plugin
Stars: ✭ 51 (+59.38%)
Mutual labels:  dsp, digital-signal-processing
Kfr
Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Stars: ✭ 985 (+2978.13%)
Mutual labels:  dsp, fft
dsp
DSP and filtering library
Stars: ✭ 36 (+12.5%)
Mutual labels:  dsp, fft
signalo
A DSP toolbox with focus on embedded environments written in Rust.
Stars: ✭ 71 (+121.88%)
Mutual labels:  dsp, digital-signal-processing
DAFx19-Gamelanizer
Accompanying material for the paper 'A Real-Time Audio Effect Plug-In Inspired by the Processes of Traditional Indonesian Gamelan Music'
Stars: ✭ 33 (+3.13%)
Mutual labels:  dsp, digital-signal-processing
Fourier
Fast Fourier transforms (FFTs) in Rust
Stars: ✭ 206 (+543.75%)
Mutual labels:  dsp, fft

dsp-kit

A digital signal processing library in Javascript

Build Status Code Climate js-standard-style license

This is my journey to study dsp. This library is not intended to be used.. There are excellent dsp js libraries out there, for example:

Since I usually learn by coding, this is my code learning result. I'm building while trying to understand the main concepts of dsp targeting audio applications.

Work in progress. Experimental (API). Not sure if it will be published, currently is just a playground to understand DSP concepts.

const dsp = require('dsp-kit')
const signal = dsp.fill(1024, (x) => Math.sin(x))
const { magnitudes, phases } = dsp.spectrum(dsp.fft(1024, signal))
// generate a signal adding two sines
const oscillator = dsp.fill(1024, dsp.add(dsp.sine(440), dsp.sine(880)))

This is a multimodule repository, each functionallity wrapped in its own package:

  • dsp: a facade module that exposes some modules as a coherent package. Probably you just need to install and use that one (unless you are concerned with code size or some esoteric features)
  • array: array utilities
  • dft: discrete fourier implementation (very slow, but easy to understand)
  • elastica: timestretch for web audio api (it will be extracted it is own repo when ready).
  • fft: the default fast fourier algorithm
  • fft-radix2: fast forward fourier algorithm using a Cooley-Tukey radix-2 algorithm
  • fft-asm: a high performance fft implementation based on asm.js (work in progress)
  • fftshift: rotate arrays to perform zero-phasing windowing
  • ola: overlap and add algorithm for time strething
  • oscillator: work in progress
  • noise: functions to generate noise
  • signal: generate and manipulate signals
  • phase-vocoder: phase vocoder algorithm to perform time strething and other signal transformations
  • rfft: real split radix FFT (work in progress)
  • spectrum: spectrum manipulation utilities
  • waa: web audio api interop utilities (wip)
  • window: windowing functions

Install

-npm install dsp-kit

But currently is not updated to latests version. You can install from this repository:

npm i [email protected]:oramics/dsp-kit.git

Documentation

Read the generated API documentation

Development

Clone the repo and install dependencies: npm install and init lerna: lerna bootstrap

Then you can list all the npm tasks with npm run:

  • run tests: npm test
  • run benchmarks: npm run benchmark
  • generate documentation: npm run docs

Credits

Large part of the code is based on the now unmantained dsp.js library by @corbanbrook, that in turn was based on code samples by Almer Thie.

Also, this library takes (steal) inspiration from:

## References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].