mvmfilter
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## mvmfilter

mvmfilter — Un filtre avec une résonance prononcée et une durée de chute contrôlable.

## Description

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.

## Syntaxe

    aout mvmfilter ain, xfreq, xTau [, iskip]

## Initialisation

iskip (facultatif, 0 par défaut) -- s'il est différent de zéro l'initialisation du filtre est ignorée.

## Exécution

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

## Exemples

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

Exemple 638. 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>

## Références

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.

1. Max Mathews et Julius O. Smith III, "Very High Q Parametrically WellBehaved Two Pole Filters"

## Crédits

Conception originale par Max V. Mathews et Julius O. Smith III

Implémentation de l'opcode par Joel Ross

Nouveau dans la version 6.16

Mai 2021.

Précédent | Niveau supérieur | Suivant
mvclpf4 | Sommaire | mxadsr