JohnVinyard/matching-pursuit

Refactor recent work into `sparse` module

Opened this issue · 0 comments

It's time to stop copy-pasting and build some reusable building blocks that make it possible to do a sort of sweep over different model compositions:

Non-Negative Representation

The important thing here is that we use a perceptually-motivated feature that allows us to iteratively remove all types of energy from the signal, including noise. We perceive, phase relationships rather than absolute peak positions for tonal sounds, and we perceive the statistics of noise, rather than the precise sound-pressure levels.

  • MultiBandSTFT
  • PhaseInvariantFeature

Analysis

  • AnticausalStack
  • UNet

Scheduling

  • fft_shift
  • dirac/hard choice followed by fft_convolve

Noise/Impulse Generation

  • simple noise generator (no "traditional" convolutions)
  • NoiseModel (much more complex, many more parameters)

Mixer, Time-Varying and Static

'nuff said here

Resonance Generation

  • F0Generator, which generates according to scalar f0 values and harmonic profiles
  • ResonanceChain, which precomputes a bank of common shapes and chooses a linear combination

Reverb Generation

Not much to say here

  • ReverbGenerator