resonz

resonz — Un filtre passe-bande avec une réponse en fréquence variable.

Description

Implémentation d'un filtre passe-bande du second ordre à deux pôles et deux zéros, avec une réponse en fréquence variable.

Syntaxe

ares resonz asig, kcf, kbw [, iscl] [, iskip]

Initialisation

Les variables d'initialisation facultatives de resonr et de resonz sont identiques aux variables de taux-i de reson.

iskip -- état initial de l'espace de données interne. Comme le filtrage comprend une boucle de rétroaction sur la sortie précédente, l'état initial de l'espace de stockage utilisé est significatif. Une valeur nulle provoquera l'effacement de cet espace ; une valeur non nulle autorisera la persistance de l'information précédente. La valeur par défaut est 0.

iscl -- facteur de pondération codé pour les résonateurs. Une valeur de 1 signifie que la crête du facteur de réponse est 1, c-à-d. toutes les fréquences autres que kcf sont atténuées selon la courbe de réponse (normalisée). Une valeur de 2 élève le facteur de réponse de façon à ce que sa valeur efficace globale soit égale à 1. Cette égalisation intentionnelle des puissances d'entrée et de sortie suppose que toutes les fréquences sont présentes ; elle est ainsi plus appropriée au bruit blanc. Une valeur de 0 signifie aucune pondération du signal, laissant cette tâche à un ajustement ultérieur (voir balance). La valeur par défaut est 0.

Exécution

resonr et resonz sont des variations du résonateur passe-bande classique à deux pôles (reson). Ces deux filtres ont deux zéros dans leur fonction de transfert en plus des deux pôles. Les zéros de resonz se trouvent à z = 1 et à z = -1. Les zéros de resonr se trouvent à +racine_carrée(R) et à -racine_carrée(R), où R est le rayon des pôles dans le plan complexe des z. L'ajout de zéros à resonr et à resonz améliore la sélectivité de la magnitude de la réponse de ces filtres aux fréquences de coupure proches de 0, ceci au prix d'une moins grande sélectivité aux fréquences supérieures à la crête de la fréquence de coupure.

resonr et resonz sont très proches du gain constant lorsque la fréquence centrale glisse, ce qui donne un contrôle plus efficace de la magnitude de la réponse qu'avec les résonateurs à deux pôles traditionnels tels que reson.

resonr et resonz produisent une sonorité considérablement différente de celle de reson, spécialement pour les faibles fréquences centrales ; la méthode par tâtonnement est la meilleure façon de déterminer quel résonateur est le plus adapté à une application particulière.

asig -- signal d'entrée à filtrer

kcf -- fréquence de coupure ou de résonance du filtre, mesurée en Hz

kbw -- largeur de bande du filtre (la différence en Hz entre les points à mi-puissance inférieur et supérieur).

Historique Technique

resonr et resonz ont étés décrits à l'origine dans un article de Julius O. Smith et James B. Angell. 1 Smith et Angell recommandait la forme resonz (zéros à +1 et -1) quand l'efficacité calculatoire était la préoccupation principale car il y a une multiplication de moins par échantillon, tandis que resonr (zéros à + et - la racine carrée du rayon des pôles R) était recommandé pour les situations où l'on voulait un pic central parfait à gain constant.

Ken Steiglitz, dans un article ultérieur 2, demontra que resonz avait un gain constant au pic réel du filtre, à l'opposé de resonr, qui affichait un gain constant à la position angulaire des pôles. Steiglitz recommandait aussi resonz pour ses encoches dans la courbe du gain plus raides à zéro et à la fréquence de Nyquist. Le livre récent de Steiglitz 3 présente une discussion technique détaillée de reson et de resonz, tandis que le livre de Dodge et Jerse's 4 illustre les différences dans les courbes de réponse de reson et de resonz.

Références

  1. Smith, Julius O. et Angell, James B., "A Constant-Gain Resonator Tuned by a Single Coefficient," Computer Music Journal, vol. 6, no. 4, pp. 36-39, Hiver 1982.

  2. Steiglitz, Ken, "A Note on Constant-Gain Digital Resonators," Computer Music Journal, vol. 18, no. 4, pp. 8-10, Hiver 1994.

  3. Ken Steiglitz, A Digital Signal Processing Primer, with Applications to Digital Audio and Computer Music. Addison-Wesley Publishing Company, Menlo Park, CA, 1996.

  4. Dodge, Charles et Jerse, Thomas A., Computer Music: Synthesis, Composition, and Performance. New York: Schirmer Books, 1997, 2nde édition, pp. 211-214.

Exemples

Voici un exemple des opcode resonr et resonz. Il utilise le fichier resonr.csd.

Exemple 736. Exemple des opcode resonr et resonz.

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 resonr.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

/* Written by Sean Costello */
 ; Orchestra file for resonant filter sweep of a sawtooth-like waveform. 
  ; The outputs of reson, resonr, and resonz are scaled by coefficients
  ; specified in the score, so that each filter can be heard on its own
  ; from the same instrument.

  sr = 44100
  kr = 4410
  ksmps = 10
  nchnls = 1
  
instr 1
  
  idur     =        p3
  ibegfreq =        p4                              ; beginning of sweep frequency
  iendfreq =        p5                              ; ending of sweep frequency
  ibw      =        p6                              ; bandwidth of filters in Hz
  ifreq    =        p7                              ; frequency of gbuzz that is to be filtered
  iamp     =        p8                              ; amplitude to scale output by
  ires     =        p9                              ; coefficient to scale amount of reson in output
  iresr    =        p10                             ; coefficient to scale amount of resonr in output
  iresz    =        p11                             ; coefficient to scale amount of resonz in output
  
 ; Frequency envelope for reson cutoff
  kfreq    linseg ibegfreq, idur * .5, iendfreq, idur * .5, ibegfreq
  
 ; Amplitude envelope to prevent clicking
  kenv     linseg 0, .1, iamp, idur - .2, iamp, .1, 0
  
 ; Number of harmonics for gbuzz scaled to avoid aliasing
  iharms   =        (sr*.4)/ifreq
  
  asig     gbuzz 1, ifreq, iharms, 1, .9, 1      ; "Sawtooth" waveform
  ain      =        kenv * asig                     ; output scaled by amp envelope
  ares     reson ain, kfreq, ibw, 1
  aresr    resonr ain, kfreq, ibw, 1
  aresz    resonz ain, kfreq, ibw, 1
  
           out ares * ires + aresr * iresr + aresz * iresz
  
endin


</CsInstruments>
<CsScore>

/* Written by Sean Costello */
f1 0 8192 9 1 1 .25                               ; cosine table for gbuzz generator
  
i1  0 10 1 3000 200 100 4000 1 0 0                ; reson  output with bw = 200
i1 10 10 1 3000 200 100 4000 0 1 0                ; resonr output with bw = 200
i1 20 10 1 3000 200 100 4000 0 0 1                ; resonz output with bw = 200
i1 30 10 1 3000  50 200 8000 1 0 0                ; reson  output with bw = 50
i1 40 10 1 3000  50 200 8000 0 1 0                ; resonr output with bw = 50
i1 50 10 1 3000  50 200 8000 0 0 1                ; resonz output with bw = 50
e


</CsScore>
</CsoundSynthesizer>


Voir aussi

resonr

Crédits

Auteur : Sean Costello
Seattle, Washington
1999

Nouveau dans la version 3.55 de Csound.