fft

fft — Complex-to-complex Fast Fourier Transform.

Description

Applies a forward Fast Fourier Transform to a complex-valued input 1-dimensional array producing a complex-valued output. The output is another array containing the complex-valued signal, and both arrays are arranged in interleaved real-imaginary format. The output array will have the same size as the input, and the transform size will be equivalent to half of the length of the array. Non-power-of-two transforms are limited to even sizes with not too many factors.

Syntax

kout[] fft kin[]

Performance

kout[] -- output array containing the complex-valued output. It will be created if it does not exist.

kin[] -- input array containing the complex-valued input.

Examples

Here is an example of the fft opcode. It uses the file fft.csd.

Example 305. Example of the fft opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<CsoundSynthesizer>
<CsOptions>
-d -o dac
</CsOptions>
<CsInstruments>
ksmps = 64

instr 1
ifftsize = 1024
kcnt init 0
kIn[] init  ifftsize
kOut[] init ifftsize

a1 oscili 0dbfs/2, 440

if kcnt >= ifftsize then
 kCmplx[] r2c kIn
 kSpec[] fft kCmplx
 kCmplx fftinv kSpec
 kOut c2r kCmplx
 kcnt = 0 
endif

kIn[] shiftin a1
a2 shiftout kOut
kcnt += ksmps
   out a2
endin
</CsInstruments>
<CsScore>
i1 0 10
</CsScore>
</CsoundSynthesizer>

See Also

Vectorial opcodes

array opcodes

Array-based spectral opcodes

Credits

Author: Victor Lazzarini
NUI Maynooth
2014

New in version 6.04