Skip to content
Mohammed Boujemaoui Boulaghmoudi edited this page Oct 6, 2018 · 13 revisions

eDSP (easy Digital Signal Processing) is a digital signal processing framework written in modern C++ that implements some of the common functions and algorithms frequently used in digital signal processing, audio engineering & telecommunications systems.

It aims to provide efficient and streamlined base calculations while at the same time having a straightforward and easy-to-use interface similar to another numeric language like MATLAB. The library integrates a C++ and Python interfaces and supports Windows, Linux, Mac OS, iOS and Android.

Yet another DSP framework?

Got it! Excellent question! There are plenty of established DSP frameworks for C++. You may be wondering, What's the point of implementing other DSP framework? What does eDSP bring to the party that differentiates it from these?

eDSP is a modern framework written for modern C++ developers. It is an alternative for those who want a powerful template DSP library that keeps a simple STL-like API. eDSP is a framework that:

  • Headers only, just copy and use.
  • Template library: supports single and double floating point, and fixed-point operations.
  • Integrates an easy to use interface, STL-like API.
  • Provides fast implementations: check the available benchmarks.
  • Aims to be cross-platform
  • Supports modern C++11/14/17 features
  • Integrates bindings for different languages: Python and JavaScript

What platforms are supported?

eDSP relies in a modern C++ compiler and some standard third-party dependencies. The idea is to build a framework compatible with most of the modern platforms with the minimum modifications.

Those are the supported platforms:

  • Linux, FreeBSD, OpenBSD, Solaris, AIX
  • Windows (msvc 2013+, cygwin)
  • macOS (clang 3.5+), iOS
  • Android

Features

eDSP is organized in different modules. Each module integrates different related features. This is the list of the available modules:

  • Audio Coder: encoder/decoder for different audio formats.
  • Digital filters: Biquad, FIR, IIR, moving average, moving median etc.
  • Spectral analysis: Fourier transform, Hilbert transform, Hartley transform, cepstrum, periodogram etc.
  • Oscillators: sinusoidal, square, triangular and sawtooth signals.
  • Random: binary sequence, uniform distribution, Bernoulli, Weibull, Student, Fisher etc.
  • Math: extra functionalities not available in the C++ standard.
  • Noising: white noise, brown noise, pink noise, Perlin noise etc.
  • Algorithms: clipper, amplifier, lineal-space, logarithmic-space , padder, normalizer etc.
  • Quantizer: u-law, A-law etc.
  • Statistics: moment, median, skewness, kurtosis etc.
  • Windowing: Bartlett, Hamming, Kaiser, Welch, Blackman etc.
  • Modulation: AM, FM, M-PSK, OFDM etc.
  • MIR: feature engineering for MIR (Music Information Retrieval) applications.
  • Equalization: LMS, RLS etc.

Note: eDSP is a framework under construction. Some features are scheduled for future development.

Please check the official doc or the list of available features to find a detailed information of each module.

Clone this wiki locally