dmpLib is a small digital signal processing library, aimed at music processing. The library was designed with the following goals in mind:

  • Easy to use.
  • Useful for fast prototyping of music processing algorithms.
  • Capable of real-time streamed signal processing.
  • Capable of offline parallel signal processing.
  • Get acquainted with digital signal processing.

The library consists of a generic signal processing core and a collection of common signal transformations such as FFT, Comb filters, etc.

The most important core library interfaces are the IStream, ISignal, ISpectrogram and ISpectrumMap interfaces.

A stream is any sample stream with a fixed sample rate and sample domain. Stream transformations can use the input stream sample rate and domain to adjust their behavior transparently. This allows easy combination of different transformations at different sample rates.

A signal implements a stream and provides two methods, one for real-time streaming access and one for offline batch access. For streaming access, queried samples are expected to be monotonically increasing.

A spectrogram is a signal of spectra. A spectrogram has a fixed spectrum width and a mapping (defined by the ISpectrumMap) which specifies how input channels are mapped to output channels. The spectrum map is used in spectrogram transformations to transparently handle different input spectra resolutions and scales. This allows for easy combining of different transformations.