Hello, I am wondering if suckless would be interested in a simple Discrete Fourier Transform implementation. I've already implemented this, so I can contribute it right away. It exclusively uses static memory. Of course, this imposes a limit on the DFT size. But usually, you are already know a fixed window size, or can set a reasonable limit. The maximum size is configured at compile time. It implements the basic radix-2 FFT algorithm, and uses Bluestein's algorithm/the chirp z-transform for non-power-of-two window sizes.

It also implements the common functions surrounding the DFT/FFT (e.g. shifting, STFT, reconstructing the negative frequency half of the spectrum of the positive one, etc.). It can also do the Discrete Time Fourier Transform and real-sized windows also using the chirp z-transform. Since it uses static memory, it comes in two variants: a C99 singled-threaded-only version and one that support multithreaded applications using C11's thread-local storage. The code is only about 300 lines.

I've also been working on a singing voice synthesizer program written in C.

Reply via email to