svfilter

svfilter — Un filtre à résonance du second ordre, avec sortie passe-bas, passe-haut et passe-bande simultanées.

Description

Implémentation d'un filtre à résonance du second ordre, avec sortie passe-bas, passe-haut et passe-bande simultanées.

Syntaxe

alow, ahigh, aband svfilter  asig, kcf, kq [, iscl][, iskip]

Initialisation

iscl -- facteur de pondération codé semblable à celui de reson. Une valeur différente de zéro 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 zéro signifie aucune pondération du signal, laissant cette tâche à un ajustement ultérieur (voir balance). La valeur par défaut est 0.

iskip (facultatif, 0 par défaut) -- disposition initiale de l'espace de données internes. Comme le filtrage comprend une boucle de rétroaction, l'état initial de l'espace de stockage est significatif. La valeur zéro efface l'espace ; une valeur non nulle maintient l'information antérieure. La valeur par défaut est 0.

Exécution

svfilter est un filtre à variable d'état du second ordre, avec contrôle au taux-k de la fréquence de coupure et de Q. Lorsque Q augmente, un pic de résonance se forme autour de la fréquence de coupure. svfilter a des sorties passe-bas, passe-haut et passe-bande simultanées ; en mélangeant les sorties, on peut générer des réponses en fréquence variées. Le filtre à variable d'état, ou filtre "multimodal", se rencontrait fréquemment dans les premiers synthétiseurs analogiques, en raison de la grande variété de sonorités produites par l'interaction entre la fréquence de coupure, la résonance et les rapports de mélange en sortie. svfilter est bien adapté à la simulation de sonorités "analogiques", ainsi que pour d'autres applications nécessitant des filtres à résonance.

asig -- signal d'entrée à filtrer.

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

kq -- Q du filtre, défini (pour les filtres passe-bande) comme le rapport (largeur de bande)/(fréquence de coupure). kq doit être compris entre 1 et 500. Lorsque kq augmente, la résonance du filtre augmente, ce qui correspond à une augmentation de la magnitude et de la "raideur" du pic de résonance. Si l'on utilise svfilter sans pondération du signal (iscl absent ou nul), le volume du pic de résonance augmente en même temps que Q. Pour de grandes valeurs de Q, il est recommandé de donner à iscl une valeur différente de zéro, ou bien d'utiliser une fonction de mise à l'échelle externe telle que balance.

svfilter est basé sur un algorithme du livre de Hal Chamberlin, Musical Applications of Microprocessors (Hayden Books, 1985).

Exemples

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

Exemple 1054. Exemple de l'opcode svfilter.

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
-odac   --limiter=.95 ;;;realtime audio out
; For Non-realtime ouput leave only the line below:
; -o svfilter.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1
  
instr 1
  
idur     = p3
ifreq    = p4
iamp     = p5
ilowamp  = p6              ; determines amount of lowpass output in signal
ihighamp = p7              ; determines amount of highpass output in signal
ibandamp = p8              ; determines amount of bandpass output in signal
iq       = p9              ; value of q
  
iharms   =  (sr*.4) / ifreq
  
asig    gbuzz .4, ifreq, iharms, 1, .9, 1               ; Sawtooth-like waveform
kfreq   linseg 1, idur * 0.5, 4000, idur * 0.5, 1       ; Envelope to control filter cutoff
  
alow, ahigh, aband   svfilter asig, kfreq, iq
  
aout1   =         alow * ilowamp
aout2   =         ahigh * ihighamp
aout3   =         aband * ibandamp
asum    =         aout1 + aout2 + aout3
kenv    linseg 0, .1, iamp, idur -.2, iamp, .1, 0       ; Simple amplitude envelope
outs    asum * kenv, asum * kenv
  
endin

</CsInstruments>
<CsScore>
f1 0 8192 9 1 1 .25
  
i1  0 5 100 .1 1 0 0  5  ; lowpass sweep
i1  5 5 200 .1 1 0 0 30  ; lowpass sweep, octave higher, higher q
i1 10 5 100 .1 0 1 0  5  ; highpass sweep
i1 15 5 200 .1 0 1 0 30  ; highpass sweep, octave higher, higher q
i1 20 5 100 .1 0 0 1  5  ; bandpass sweep
i1 25 5 200 .1 0 0 1 30  ; bandpass sweep, octave higher, higher q
i1 30 5 200 .2 .4 .6  0  ; notch sweep - notch formed by combining highpass and lowpass outputs
e
</CsScore>
</CsoundSynthesizer>


Crédits

Auteur : Sean Costello
Seattle, Washington
1999

Nouveau dans la version 3.55 de Csound.