biquada

biquada — Un filtre numérique biquadratique glissant à usage général avec des paramètres de taux-a.

Description

Un filtre numérique biquadratique glissant à usage général.

Syntaxe

ares biquada asig, ab0, ab1, ab2, aa0, aa1, aa2 [, iskip]

Initialisation

iskip (facultatif, 0 par défaut) -- s'il est non nul, l'initialisation est ignorée. Vaut 0 par défaut. (Nouveau dans la version 3.50 de Csound.)

Exécution

asig -- signal d'entrée

biquada est un filtre numérique biquadratique à usage général de la forme :


  a0*y(n) + a1*y[n-1] + a2*y[n-2] = b0*x[n] + b1*x[n-1] + b2*x[n-2]

Ce filtre a pour réponse en fréquence :


         B(Z)   b0 + b1*Z-1  + b2*Z-2
  H(Z) = ---- = ------------------
         A(Z)   a0 + a1*Z-1  + a2*Z-2

On rencontre souvent ce type de filtre dans la littérature sur le traitement numérique du signal. Il accepte six coefficients de taux-a définis par l'utilisateur.

Exemples

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

Exemple 104. Exemple de l'opcode biquada.

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
; Audio out   Audio in    No messages
-odac           -iadc     -d     ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o biquad.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 2

; Instrument #1.
instr 1
  ; Get the values from the score.
  idur = p3
  iamp = p4
  icps = cpspch(p5)
  afco   expon  100, p3, 2000
  arez   line  0.8, p3, 0.99

  ; Calculate the biquadratic filter's coefficients 
  afcon = 2*3.14159265*afco/sr
  aalpha = 1-2*arez*cos(afcon)*cos(afcon)+arez*arez*cos(2*afcon)
  abeta = arez*arez*sin(2*afcon)-2*arez*cos(afcon)*sin(afcon)
  agama = 1+cos(afcon)
  am1 = aalpha*agama+abeta*sin(afcon)
  am2 = aalpha*agama-abeta*sin(afcon)
  aden = sqrt(am1*am1+am2*am2)
  ab0 = 1.5*(aalpha*aalpha+abeta*abeta)/aden
  ab1 = ab0
  ab2 = 0
  aa0 = 1
  aa1 = -2*arez*cos(afcon)
  aa2 = arez*arez
  
  ; Generate an input signal.
  axn vco 1, icps, 1

  ; Filter the input signal.
  ayn biquada axn, ab0, ab1, ab2, aa0, aa1, aa2
  outs ayn*iamp/2, ayn*iamp/2
endin


</CsInstruments>
<CsScore>

; Table #1, a sine wave.
f 1 0 16384 10 1

;    Sta  Dur  Amp    Pitch
i 1  0.0  5.0  20000  6.00 
e


</CsScore>
</CsoundSynthesizer>


Voir aussi

biquad

Crédits

Auteur : Hans Mikelson
Auteur : John ffitch d'après Hans Mikelson
Août 2001

Nouveau dans la version 4.13 de Csound.