Kyma Forum
  Kyma Support
  Proper Block Convolutions

Post New Topic  Post A Reply
profile | register | preferences | faq | search

next newest topic | next oldest topic
Author Topic:   Proper Block Convolutions
David McClain
Member
posted 31 May 2001 17:05         Edit/Delete Message   Reply w/Quote
Hi,

I have been wondering here about how to create zero padded blocks of sound and filters so that we can do "proper" block convolution.

The Kyma approach has been to use Bristow-Johnson windows on the input to help suppress the effects of the circular convolutions when doing FFT transformations. But this still produces artifacts compared to the correct form of overlap-add block convolutions.

It appears that somehow I need to boost the processing rate in the FFT, Inverse FFT blocks and whatever is between them, in order to pull this off.

I am completely stymied on this one with Kyma. Any suggestions?

- DM

IP: Logged

David McClain
Member
posted 01 June 2001 01:52         Edit/Delete Message   Reply w/Quote
Hey, I think I just about have it! As soon as I do I will post it for everyone.

This solution uses something akin to polyphase filtering with a pair of FFT+Inverse FFT chains. Each FFT+Inverse is applied to a signal and its delayed version by 1/4 FFT size.

The two pairs of FFT chains are likewise delayed by 1/2 FFT size between them.

The inputs to both FFT chains go through a modified Bristow-Johnson window that is nonzero only over the central half of the window interval.

The outputs have to be delayed and added. The delay to be used on each L/R output stream is that which makes its input delay + output delay = 3/4 FFT size = the longest delay in the system.

Right now I have tons of spurs being generated at only about 35 dB down from the oscillator peak signal. But I'm pretty sure I can find that bug...

This is a real hungry beast, and I can only run up to 512 element FFT's without Kyma complaining about too many ocillators. Looks like it's using about 8 DSP's for the 512 element FFT's.

I just knew there had to be a way to do this on Kyma. What an incredible system!

- DM

IP: Logged

pete
Member
posted 01 June 2001 05:28         Edit/Delete Message   Reply w/Quote
Hi David

I (for one) am waiting eagerly.
I don't understand the maths but I do understand the potential.
Would this mean that we could have impulse of 1/44 secs max, if the Kyma sample rate was set to 22khz.

Regards Pete

IP: Logged

David McClain
Member
posted 01 June 2001 13:45         Edit/Delete Message   Reply w/Quote
Hi Pete,

I find that the maximum length allowed by Kyma for the FFT processing is 512 elements. Beyond that it complains that I ran out of static RAM on the Capybara. (Not sure why this should be -- I have lots of sounds with much more complexity than this running here...)

At any rate, with this blocksize limitation, at 22 KHz sample rate that means the processing is limited to impulses shorter than 256 elements = 11.6 ms.

This is insufficient for some large reverb convolutions but probably plenty for many other delay based effects.

Did this answer your question?

[Of course, you can do longer convolutions using the existing 2-phase algorithm provided by SSC, if you don't care about the artifacts produced by edge effects in circular convolutions. This might be acceptable to you depending on the nature of the filter and the length of the FFT. Doing this would allow longer FFT lengths and hence longer impulse files.

I have been unable to run the FFT's beyond 1024 elements though. But at 22 KHz sample rate that would allow you to use impulses that last 46.4 ms = 1/20 sec.]

- DM

[This message has been edited by David McClain (edited 01 June 2001).]

IP: Logged

All times are CT (US)

next newest topic | next oldest topic

Administrative Options: Close Topic | Archive/Move | Delete Topic
Post New Topic  Post A Reply

Contact Us | Symbolic Sound Home

This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.


Ultimate Bulletin Board 5.45c