window

window — Applique une fenêtre à un tableau.

Description

Applique une forme de fenêtre donnée à un vecteur stocké dans un tableau. La sortie est un tableau contenant le vecteur fenêtré.

Syntaxe

kout[] window kin[][,koff, itype]

Initialisation

itype -- type de la fenêtre (facultatif) : 0 = Hamming, 1 = Hanning (von Hann) (vaut 1 par défaut).

Exécution

kout[] -- tableau contenant la sortie fenêtrée. Créé s'il n'existe pas.

kin[] -- tableau contenant le vecteur d'entrée.

koff -- décalage pour faire commencer la fenêtre à la position koff (positif ou nul, 0 par défaut).

Exemples

Voici un exemple de l'opcode window. Il utilise le fichier window.csd.

Exemple 1223. Exemple de l'opcode window.

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>

Voir aussi

Opcodes vectoriels, Opcodes de tableaux.

Crédits

Auteur : Victor Lazzarini
NUI Maynooth
2014

Nouveau dans la version 6.04