filter2

filter2 — Réalise un filtrage au moyen d'un bloc de filtre numérique de forme transposée II sans contrôle variable.

Description

Filtre configurable à usage général sans contrôle variable des pôles. Les coefficients du filtre implémentent l'équation aux différences suivante :


(1)*y(n) = b0*x[n] + b1*x[n-1] +...+ bM*x[n-M] - a1*y[n-1] -...- aN*y[n-N]

dont la fonction de transfert est représentée par :


           B(Z)      b0 + b1*Z-1  + ... + bM*Z-M
  H(Z)  =  ----  =  --------------------------
           A(Z)       1 + a1*Z-1  + ... + aN*Z-N

Syntaxe

ares filter2 asig, iM, iN, ib0, ib1, ..., ibM, ia1, ia2, ..., iaN
kres filter2 ksig, iM, iN, ib0, ib1, ..., ibM, ia1, ia2, ..., iaN

Initialisation

A l'initialisation, les nombres de zéros et de pôles du filtres sont spécifiés ainsi que leurs valeurs. Les coefficients doivent être obtenus par une application externe de conception de filtre telle que Matlab et sont spécifiés directement ou bien chargés dans une table via GEN01.

Exécution

L'opcode filter2 réalise un filtrage au moyen d'un bloc de filtre numérique de forme transposée II sans contrôle variable.

Comme filter2 implémente des filtres récursifs généralisés, on peut l'utiliser pour définir une grande variété d'algorithmes généraux de traitement numérique du signal. Par exemple, on peut implémenter un guide d'onde numérique pour modéliser un instrument de musique au moyen d'une paire d'opcodes delayr et delayw conjointement à l'opcode filter2.

Exemples

Un filtre passe-bas RIF du premier ordre à phase linéaire opérant sur un signal de taux-k :

k1 filter2 ksig, 2, 0, 0.5, 0.5   ;; filtre RIF de taux-k

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

Exemple 271. Exemple de l'opcode filter2.

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>
; Select audio/midi flags here according to platform
-odac   ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o filter2.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1	 ; 2 saw waves of which one is slightly detuned
 
ib1   = p5  
ivol  = p6				;volume to compensate                                               
kcps  init cpspch(p4)
asig1 vco2 .05, kcps			;saw 1
asaw1 filter2 asig1, 1, 1, 1, ib1	;filter 1 
asig2 vco2 .05, kcps+1			;saw 2                      
asaw2 filter2 asig2, 1, 1, 1, ib1	;filter 2
aout  = (asaw1+asaw2)*ivol		;mix
      outs aout, aout

endin
</CsInstruments>
<CsScore>

i 1 0 4 6.00 -.001 5	;different filter values
i 1 + 4 6.00 -.6   2	;and different volumes
i 1 + 4 6.00 -.95 .3	;to compensate
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

zfilter2

Crédits

Auteur : Michael A. Casey
M.I.T.
Cambridge, Mass.
1997

Nouveau dans la version 3.47