dconv

dconv — Un opcode de convolution directe.

Description

Un opcode de convolution directe.

Syntaxe

ares dconv asig, isize, ifn

Initialisation

isize -- la taille du tampon de convolution à utiliser. Si la taille du tampon est inférieure à celle de ifn, alors seules les premières isize valeurs de la table seront utilisées.

ifn -- numéro de la table d'une fonction stockée contenant la réponse impulsionnelle pour la convolution.

Exécution

Plutôt que d'utiliser la méthode d'analyse/resynthèse de l'opcode convolve, dconv utilise la convolution directe pour créer le résultat. Avec de petites tables, il peut faire cela avec une certaine efficacité, alors que des tables plus grandes nécessitent bien plus de temps de calcul. dconv effectue (isize * ksmps) multiplications à chaque cycle-k. C'est pourquoi les effets de réverbération et de délai sont mieux réalisés par d'autre opcodes (à moins que les durées soient courtes).

dconv a été conçu pour travailler avec des tables variant dans le temps pour faciliter de nouvelles possibilités de filtrage en temps réel.

Exemples

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

Exemple 184. Exemple de l'opcode dconv.

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    No messages
-odac           -iadc     -d     ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o dconv.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
 
#define RANDI(A) #kout  randi   1, kfq, $A*.001+iseed, 1
        tablew  kout, $A, itable#
 
instr 1
itable  init    1
iseed   init    .6
isize   init    ftlen(itable)
kfq     line    1, p3, 10
 
$RANDI(0)
$RANDI(1)
$RANDI(2)
$RANDI(3)
$RANDI(4)
$RANDI(5)
$RANDI(6)
$RANDI(7)
$RANDI(8)
$RANDI(9)
$RANDI(10)
$RANDI(11)
$RANDI(12)
$RANDI(13)
$RANDI(14)
$RANDI(15)

asig    rand    10000, .5, 1
asig    butlp   asig, 5000
asig    dconv   asig, isize, itable
 
        out     asig *.5
endin


</CsInstruments>
<CsScore>

f1 0 16 10 1
i1 0 10
e


</CsScore>
</CsoundSynthesizer>


Voir aussi

pconvolve, convolve, ftconv

Crédits

Auteur : William « Pete » Moss
2001

Nouveau dans la version 4.12