Preprocessing options

Implemented

Flatten dynamics

Integrating the Flatten Dynamics plugin code

De-envelope

Using cepstral processing to factor out the spectral envelope, after Simple Cepstrum

Remove broadband noise

Like the initial noise-removal phase of Silvet -- which runs noise removal on the constant-Q spectrum, but I expect the method would work unchanged for STFT as well

Add broadband noise

Surprisingly turned out to have a potential application in MATCH: adding -30dB white noise to the inputs gave a more stable alignment

Not (yet) implemented

Remove pitched sounds

For symmetry with "Remove broadband noise", something that filters out stable pitched sinusoidal or harmonic content in the manner of the Devuvuzelator (does this have any application?)

Other spectral whitenings?

Other aspects of harmonic/percussive separation?

Processing order

We should have one single plugin / embeddable C++ class / application and it should have a list of on/off toggles for the available preprocessing options.

If more than one option is selected, the preprocessors should be applied in a fixed order:

  1. De-envelope
  2. Remove broadband noise
  3. (Remove pitched sounds)
  4. Flatten dynamics
  5. Add broadband noise

Nos. 1-3 are carried out in the frequency domain, the remaining two in the time domain.