mvmfilter — Un filtre avec une résonance prononcée et une durée de chute contrôlable.
Filtre le signal en entrée avec la fréquence de résonance et la durée de chute spécifiées. Peut être utilisé pour ajouter une résonance spécifique à un signal entrant ou pour modeler de courts éclats de sinusoïdes à la fréquence désirée. Avec une durée de chute suffisamment longue on peut en faire un oscillateur sinusoïdal.
iskip (facultatif, 0 par défaut) -- s'il est différent de zéro l'initialisation du filtre est ignorée.
aout -- signal filtré
ain -- signal à filtrer
xfreq -- fréquence de résonance du filtre
Avertissement | |
---|---|
La sortie du filtre peut augmenter rapidement si le signal en entrée est corrélé avec la sortie. Le pire cas se produit s'il augmente de l'amplitude de l'entrée à chaque échantillon. Pour limiter la croissance afin que le filtre n'explose pas il vaut mieux pondérer toute entrée continue de manière significative. L'échelle requise est relative à la valeur de la durée de chute tau si bien que si l'on choisit une durée de chute maximale on peut calculer le facteur de pondération requis : 1 / $M_E / (sr*tau) |
xTau -- Durée de chute du filtre en secondes
La durée de chute est le temps en seconde pour que l'atténuation du filtre soit de 1/e
Voici un exemple de l'opcode mvmfilter. Il utilise le fichier mvmfilter.csd.
Exemple 649. Exemple de l'opcode mvmfilter.
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 ;;;real-time audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o mvmfilter.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr=44100 ksmps=32 0dbfs=1 nchnls=2 gaverb init 0 instr highQResonator ap mpulse .5, 0 a1 mvmfilter ap, p4, .25 out a1, a1 endin instr dustyResonator ap dust .1, 30 a1 mvmfilter ap, p4, .15 out a1, a1 endin instr oscillator ap mpulse .5, 0 kenv madsr .1, .2, .6, .4 a1 mvmfilter ap, p4, 1e6 a1 *= kenv out a1, a1 endin instr resonatorBank1 ap mpulse .5, 0 kampenv madsr .01, .2, .6, .4 kenv init 1 iDecayTime init 1 a1 mvmfilter ap, p4*1*kenv, iDecayTime a2 mvmfilter ap, p4*3*kenv, iDecayTime*.8 a3 mvmfilter ap, p4*5*kenv, iDecayTime*.4 a4 mvmfilter ap, p4*7*kenv, iDecayTime*.3 a5 mvmfilter ap, p4*9*kenv, iDecayTime*.2 a6 mvmfilter ap, p4*11*kenv, iDecayTime*.1 aout = (a1+a2+a3+a4+a5+a6) * kampenv * (.1667) gaverb += aout * .3 out aout, aout endin instr resonatorBank2 ap noise 0.005, 0 kampenv madsr .01, .2, .6, .4 kenv init 1 iDecayTime init 1 a1 mvmfilter ap, p4*1*kenv, iDecayTime a2 mvmfilter ap, p4*3*kenv, iDecayTime*.8 a3 mvmfilter ap, p4*5*kenv, iDecayTime*.5 a4 mvmfilter ap, p4*7*kenv, iDecayTime*.4 a5 mvmfilter ap, p4*9*kenv, iDecayTime*.3 a6 mvmfilter ap, p4*11*kenv, iDecayTime*.2 aout = (a1+a2+a3+a4+a5+a6) * kampenv * (.1667) gaverb += aout * .3 out aout, aout endin instr harmonicArp avco vco2 .01, 50 avco moogladder2 avco, 3000, .1 kenv linseg 1.3,p3,2 kampenv madsr 4, .1, 1, .4 iDecayTime init .02 a1 mvmfilter avco, p4*1*kenv, iDecayTime a2 mvmfilter avco, p4*2*kenv, iDecayTime a3 mvmfilter avco, p4*3*kenv, iDecayTime a4 mvmfilter avco, p4*4*kenv, iDecayTime a5 mvmfilter avco, p4*5*kenv, iDecayTime a6 mvmfilter avco, p4*6*kenv, iDecayTime aout = (a1+a2+a3+a4+a5+a6) * kampenv * .3 aout tanh aout gaverb += aout*.3 out aout, aout endin instr reverb adel init 0 ain = gaverb aleftout, arightout reverbsc ain, ain, .91, 12000 outs aleftout, arightout gaverb = 0 endin </CsInstruments> <CsScore> s ; mvmfilter is basically a damped resonator i "highQResonator" 0 1 220 ; putting some 'dust' through it i "dustyResonator" 2 2 300 ; with a large time-constant it becomes an oscillator i "oscillator" 4 3 440 s ; It works for a modal synthesis type use i "resonatorBank1" 0 5 50 i "resonatorBank1" 2 5 100 i "resonatorBank1" 4 5 150 s ; and some slightly more interesting effects... i "resonatorBank2" 0 5 50 i "resonatorBank2" 2 5 125 i "harmonicArp" 4 12 100 i "resonatorBank2" 7 5 50 i "resonatorBank2" 10 5 180 i "reverb" 0 21 </CsScore> </CsoundSynthesizer>
Ce filtre est basé sur les travaux de Max Mathews et de Julius O. Smith III. Ce filtre fut d'abord utilisé par Max Mathews dans une application qui passait un son dans un banc de ces filtres avec contrôle en temps réel des paramètres de durée de chute et de fréquence. Cette installation était la base d'une performance collaborative en temps réel et était référencée comme filtres phaseurs.
Max Mathews et Julius O. Smith III, "Very High Q Parametrically WellBehaved Two Pole Filters"