allpole

allpole — Réalisation d'un filtre tout-pôle par convolution directe.

Description

Cet opcode réalise un filtre tout-pôle par convolution directe.

Syntaxe

ares allpole asig, kCoef[]

Exécution

kCoef[] -- coefficients du filtre tout-pôle (tableau de taille iord)

asig -- entrée audio

ares -- sortie audio

Cet opcode fait partie d'une suite d'opcodes de prédiction linéaire sur un flux. Il réalise un filtre tout-pôle en utilisant des coefficients qui lui sont passés via un tableau de taux-k. La longueur du filtre est déterminée par la taille du tableau.

The typical application is compute the coefficients via some method and then pass these to the opcode. The set of coefficients passed to allpole need to implement a stable filter, since this is an IIR filter and stability is not guaranteed by default.

La méthode la plus commune de dérivation des coefficients est l'analyse par prédiction linéaire, produite par exemple par lpcanal. D'autres méthodes peuvent être employées, y compris le calcul direct des coefficients à partir d'une recette de filtre connu (par exemple résonateurs, etc).

Exemples

Voici un exemple de l'opcode allpole qui utilise un signal d'entrée audio comme source lpc. Il utilise le fichier allpole.csd.

Exemple 53. Exemple de l'opcode allpole.

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>
-odac -d
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 64
nchnls = 1
0dbfs = 1

gifw ftgen 0,0,1024,20,2,1

instr 1
a1 diskin "fox.wav",1,0,1
kcfs[],krms,kerr,kcps lpcanal a1,1,128,1024,64,gifw
if kcps > 180 then
  kcps = 180
endif
a2 buzz 0dbfs, kcps, sr/(kcps*2), -1
a3 allpole a2*krms*kerr,kcfs
a3 dcblock a3
out a3
endin

</CsInstruments>
<CsScore>
i1 0 30
</CsScore>
</CsoundSynthesizer>


Voici un autre exemple de l'opcode allpole qui utilise une table de fonction comme source lpc. Il utilise le fichier allpole-2.csd.

Exemple 54. Un autre exemple de l'opcode allpole.

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>
-odac -d
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 64
nchnls = 1
0dbfs = 1

gifn ftgen 0,0,0,1,"fox.wav",0,0,1
gifw ftgen 0,0,1024,20,2,1

instr 1
k1 init 0
kts = p4
kcfs[],krms,kerr,kcps lpcanal k1,1,gifn,1024,ksmps,gifw
if kcps > 180 then
  kcps = 180
endif
a1 buzz 0dbfs, kcps, sr/(kcps*2), -1
a3 allpole a1*krms*kerr,kcfs
k1 += ksmps*kts
if k1 > ftlen(gifn) then
 k1 = 0
endif 
a3 dcblock a3
out a3
endin

</CsInstruments>
<CsScore>
i1 0 10 1
i1 10 10 .75
i1 20 10 1.5
</CsScore>
</CsoundSynthesizer>


Voir aussi

lpcfilter, lpcanal