vdelayxq — Un opcode de délai variable sur 4 canaux avec interpolation de grande qualité.
imd -- durée maximale du délai (en secondes).
iws -- taille de la fenêtre d'interpolation (voir ci-dessous).
ist (facultatif) -- l'initialisation est ignorée s'il est différent de zéro.
aout1, aout2, aout3, aout4 -- signaux audio en sortie.
ain1, ain2, ain3, ain4 -- signaux audio en entrée.
adl -- durée du délai en secondes.
Cet opcode utilise une interpolation de grande qualité (et peu rapide), qui est bien plus précise que les interpolations linéaire et cubique couramment disponibles. Le paramètre iws fixe le nombre d'échantillons en entrée utilisés pour le calcul d'un échantillon en sortie (les valeurs permises sont des multiples entiers de 4 compris entre 4 et 1024) ; plus les valeurs sont élevées, meilleure est la qualité et plus lent le processus.
Les opcodes multicanaux (par exemple vdelayxq) permettent de retarder 2 ou 4 variables à la fois (signaux stéréo ou quadro) ; c'est bien plus efficace que d'utiliser un opcode séparé pour chaque canal.
Notes | |
---|---|
|
Voici un exemple de l'opcode vdelayxq. Il utilise le fichier vdelayxq.csd.
Exemple 1169. Exemple de l'opcode vdelayxq.
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 ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o vdelayxq.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 4 0dbfs = 1 instr 1 ims = .5 ;maximum delay time in seconds iws = 1024 ;window size adl = .5 aout1 diskin2 "beats.wav", 1, 0, 1 ;loop beats.wav aout2 diskin2 "fox.wav", 1, 0, 1 ;loop fox.wav aout3 diskin2 "Church.wav", 1, 0, 1 ;loop Church.wav aout4 diskin2 "flute.aiff", 1, 0, 1 ;loop flute.aiff a2 poscil .1, .5, 1 ;make an LFO, 1 cycle per 2 seconds adl = a2 + ims/2 ;offset the LFO so that it is positive aout1, aout2, aout3, aout4 vdelayxq aout1, aout2, aout3, aout4, adl, ims, iws; Use the LFO to control delay time outq aout1, aout2, aout3, aout4 endin </CsInstruments> <CsScore> f1 0 8192 10 1 i 1 0 10 e </CsScore> </CsoundSynthesizer>
Deux points importants ici. D'abord, la valeur du retard doit toujours être
positive. Ensuite, même si la valeur du retard peut être contrôlée au taux-k,
il n'est pas prudent d'agir ainsi, car des changements de durée soudains
provoqueront des clics.