[sdiy] Waveform analysis into non-sine components
Olivier Gillet
ol.gillet at gmail.com
Tue Apr 10 17:56:16 CEST 2012
> How do I know whether the set of orthogonal functions I've got is complete? For example, a group of half the walsh functions would all be orthogonal to each other, but wouldn't form a complete basis set. How do I tell if the set is a complete basis set?
A simple way is to try to express the Fourier basis in terms of your
functions. If there are elements in the Fourier Basis you can't get to
with your new decomposition, it won't work. If you can express the
Fourier basis with your functions, you are good to go, since it is
just a change of basis.
Also, I am not sure if you are interested in decomposing single cycle
waveforms (this was my assumption) ; or whole signals which are not
stationary. In the second case, using Fourier analysis on the whole
signal does not highlight the temporal evolution of the signal. The
most common approach is to break down the signal into small
overlapping windows, and perform an analysis on each window (assuming
that the signal is stationary over the segment) ; but this is not the
only approach. A very intuitive technique is matching pursuit. You
have a "dictionary" of reference signals. You search for the element
the most correlated with your signal, you subtract it, and you repeat
the procedure on the residual until your residual has low energy. If
your dictionary contains sustained sine waves, this is equivalent to
Fourier analysis. But you can use clicks, sine waves with envelopes,
etc, to get a representation more detailed than Fourier analysis, and
in which most coefficients are null for a large palette of audio
signals. - it's a bit like trying to approximate a song with a simple
ROMpler with a programmable envelope generator. Hot stuff for
low-bitrate coding! See the figures in this:
http://ismir2008.ismir.net/papers/ismir2008_261.pdf
Olivier
More information about the Synth-diy
mailing list