svfilter — Un filtre à résonance du second ordre, avec sortie passe-bas, passe-haut et passe-bande simultanées.
Implémentation d'un filtre à résonance du second ordre, avec sortie passe-bas, passe-haut et passe-bande simultanées.
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.
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).
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>