[sdiy] Fourier Analysis Question

Magnus Danielson magnus at rubidium.dyndns.org
Sat Dec 18 18:39:28 CET 2010


On 12/18/2010 06:02 PM, Tom Wiltshire wrote:
>
> On 18 Dec 2010, at 16:22, Magnus Danielson wrote:
>
>> On 12/18/2010 11:32 AM, Tom Wiltshire wrote:
>>> Richard,
>>>
>>>> You can, but FFTs are almost useless for analysing fast attacks, because the window size isn't small enough to capture the partial movement within the attack.
>>>
>>> Yeah, I realise. For the work on attacks, I was using a different approach. I have a whole series of different attack and decay curves, and I wrote a script which exhaustively tries all the different combinations and times and keeps track of the best fit. Essentially we assume that a synth could do a reasonable job of copying this envelope, then we see which synth envelope is the best fit.
>>> The hope was that I'd be able to capture some data about average attack length vs pitch and velocity to see if there are useful patterns. And by getting an algorithm to do it, it becomes "objective" in some sense that it doesn't when I just pick a point as the boundary between attack and decay.
>>
>> Have you done Z-transform analysis rather than pure FFT?
>> For transient signals it should be more applicable than FFT.
>
> Nope. I haven't heard of this. Do you know any good places I could read up about it?

OK. Your inbox is a good start, the Wikipedia article is also a good start:
http://en.wikipedia.org/wiki/Z-transform

As for the Inbox:

The Z-transform is essentially the same as the discrete Fourier 
Transoform (for which FFT is just a computational trick) in which rather 
than using the complex e^(iw) oscillator as basis it uses the superset 
function of e^(o+iw) which can form both accelerating and decelerating 
oscillations. The Fourier transform is a special case where o=0.

Practically you can pre-scale the sample-series with e^(-o*t) for 
analysis of the o offset. Positive o relates to accelerating amplitude 
and negative o relates to decelerating amplitudes.

It is best viewed as a 2D plot with the x-axis as frequency, y-axis for 
amplitude acceleration o values. Having both being log10 should help. 
Indication is then in log10 of absolute amplitude. You will see the 
zeros (no-responce) and poles (where responce blows up to infinity) 
quite clearly that way.

The Z-transform is relevant for transient responses (such as you hitting 
a key on your piano) where as the Fourier transform is actually only 
useful for continous amplitude signals (such as a perfect aligned sample 
of you holding a key on an organ and sample a part of that tone).

The inperfection of FFT to handle "short" samples is handled by 
windowing functions to round of the end part, but high-pass filtering 
prior to creating the sampling series to reduce the issues somewhat. 
Offset errors due to "sawtooth" error between first and last sample.
For transient sounds, making sure sufficient silence prior to first 
transient response and enough of the reverb tail such that it is 
essentially dead. For some uses, cutting prior to first reflection can 
be used to simulate an echo-free room, but for low-frequency responses 
it can be hard to achieve.

Another method is to do many samples and then process them individually 
and then accumulate the results (the complex amplitudes) and it will 
help to average out sampling errors.

So, a bit care in the pre-processing prior to getting the final sequence 
to analyse helps.

Cheers,
Magnus



More information about the Synth-diy mailing list