rifft — Transformée de Fourier rapide inverse complexe vers réel.
Applique une transformée de Fourier rapide inverse à un tableau unidimensionnel de valeurs complexes produisant une sortie réelle. Cette sortie est un autre tableau contenant les valeurs réelles du signal. Si le tableau d'entrée a pour taille une puissance de deux, la taille du tableau de sortie sera égale à celle du tableau d'entrée. Sinon, la sortie aura deux valeurs de moins (taille d'entrée - 2).
kout[] -- tableau contenant les valeurs réelles de sortie. Créé s'il n'existe pas.
kin[] -- tableau contenant les valeurs complexes d'entrée.
Voici un exemple de l'opcode rifft. Il utilise le fichier irfft.csd.
Exemple 911. Exemple de l'opcode rifft.
Voir les sections Audio en temps réel et Options de la ligne de commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> -d -o dac </CsOptions> <CsInstruments> ;ksmps needs to be an integer div of hopsize ksmps = 64 instr 1 ihopsize = 256 ; hopsize ifftsize = 1024 ; FFT size iolaps = ifftsize/ihopsize ; overlaps ibw = sr/ifftsize ; bin bandwidth kcnt init 0 ; counting vars krow init 0 kOla[] init ifftsize ; overlap-add buffer kIn[] init ifftsize ; input buffer kOut[][] init iolaps, ifftsize ; output buffers a1 diskin2 "fox.wav",1,0,1 ; audio input /* every hopsize samples */ if kcnt == ihopsize then /* window and take FFT */ kWin[] window kIn,krow*ihopsize kSpec[] rfft kWin /* filter between high and low freqs */ ilow = 0 ihigh = 1000 ki = int(ilow/ibw) until ki == int(ihigh/ibw) do kSpec[ki] = 0 ki += 1 od /* IFFT + window */ kRow[] rifft kSpec kWin window kRow, krow*ihopsize /* place it on out buffer */ kOut setrow kWin, krow /* zero the ola buffer */ kOla = 0 /* overlap-add */ ki = 0 until ki == iolaps do kRow getrow kOut, ki kOla = kOla + kRow ki += 1 od /* update counters */ krow = (krow+1)%iolaps kcnt = 0 endif /* shift audio in/out of buffers */ kIn shiftin a1 a2 shiftout kOla out a2/iolaps /* increment counter */ kcnt += ksmps endin </CsInstruments> <CsScore> i1 0 10 </CsScore> </CsoundSynthesizer>