Both of these programs do time-varying
spectral warping. In each case, a warp
function is provided, consisting of N/2
values where is value is a multiplier of
the frequency in the corresponding FFT bin.

Tofu requires a second function which
specifies an instantaneous offset of the
warp function (ranging from 0-1). 

Squeegie does not offset the warp function
but requires a second function specifying
the instantaneous  intensity of the warp 
where 0.0 is no warping, 1. is full warping 
and >1.0 is extra warping.

tofu:  dynamic spectral warping
tofu   [flags] < floatsams > floatsams
        N:      fft length [1024]
        R:      sampling rate [44100]
        M:      window size in samples [4096]
        D:      decimation factor in samples [512]
        I:      interpolation factor in samples [512]
        w:      warp function [wfunc]
        o:      offset function [ofunc]
        a:      permit aliasing
        d:      duration of output [undefined]
        g:      threshold generator [.001]
        s:      synthesize analysis input
	
squeegie:  dynamic spectral warping
squeegie   [flags] < floatsams > floatsams
        N:      fft length [1024]
        R:      sampling rate [44100]
        M:      window size in samples [4096]
        D:      decimation factor in samples [512]
        I:      interpolation factor in samples [512]
        w:      warp function [wfunc]
        o:      scaling function [ofunc]
        a:      permit aliasing
        d:      duration of output [undefined]
        g:      threshold generator [.001]
        s:      synthesize analysis input


Here's a tofu example:

(Now that the CARL software is on the streets, I don't feel 
awkward about using their "gen" programs.)

medication> gen4 -L1024 0 1 -4  2000 .5 0 22050 .5 > wfunc
medication> gen1 -L667  0 0 1 1 > ofunc
medication> fromsf -H karlheinz_dig | tofu -N2048 -g.005 | tosf -R44100 hemiola_lips

you could even try the same data on squeegie:

medication> fromsf -H De_Sade.snd | squeegie | tosf -R44100 Skinner.snd

