deltapi — Lit une ligne à retard avec des délais variables et interpolation.
xdlt -- spécifie le délai de lecture en secondes. Chaque valeur est comprise entre 1 période de contrôle et le délai total de la paire lecture/écriture ; cependant, comme il n'y a pas de vérification interne du respect de cet intervalle, l'utilisateur est entièrement responsable. Chaque argument peut être une constante, une variable ou un signal variant dans le temps ; l'argument xdlt de deltapi implique qu'une valeur de délai variant au taux audio est autorisée ici.
deltapi extrait le son par lecture interpolée. En interpolant entre deux échantillons voisins stockés deltapi restitue un délai particulier avec plus de précision, mais nécessite deux fois plus de temps de calcul.
Cet opcode peut lire directement dans une paire delayr/delayw en extrayant les données audio retardées des idlt secondes de son stocké. Il peut y avoir n'importe quel nombre d'unités deltap et/ou deltapi entre une paire lecture/écriture. Chacune reçoit un extrait audio sans changement de l'amplitude originale.
Ces opcodes peuvent fournir de multiples lectures de délai pour des lignes à retard arbitraires et des réseaux à rétroaction. Ils peuvent délivrer des délais constants ou variables, et sont utiles pour construire des effets de chorus, harmonizer et Doppler. Les délais constants (et certains de ceux qui varient lentement) ne nécessitent pas d'interpolation ; deltap leur convient très bien. Les délais variant à moyenne vitesse ou rapidement nécessiteront cependant les services supplémentaires de deltapi.
Les paires delayr/delayw peuvent être entrelacées. Pour associer une unité de lecture de délai à une unité delayr, elle doit non seulement être située entre ce delayr et le delayw approprié, mais aussi précéder tous les delayr suivants. Voir l'exemple 2. (Cette possibilité fut ajoutée dans la version 3.57 de Csound par Jens Groh et John ffitch).
N.B. Les délais de taux-k ne sont pas interpolés en interne, mais déroulent plutôt des décalages temporels d'échantillons audios ; c'est adéquat pour des délais changeant lentement. Cependant, pour les changements à vitesse moyenne ou rapides, il faut fournir en entrée des valeurs de délai avec une plus grande résolution de taux audio.
Exemple 226. Exemple n°1 de deltap
asource buzz 1, 440, 20, 1 atime linseg 1, p3/2,.01, p3/2,1 ; trace a distance in secs ampfac = 1/atime/atime ; and calc an amp factor adump delayr 1 ; set maximum distance amove deltapi atime ; move sound source past delayw asource ; the listener out amove * ampfac
Exemple 227. Exemple n°2 de deltap
ainput1 = ..... ainput2 = ..... kdlyt1 = ..... kdlyt2 = ..... ;Read delayed signal, first delayr instance: adump delayr 4.0 adly1 deltap kdlyt1 ; associated with first delayr instance ;Read delayed signal, second delayr instance: adump delayr 4.0 adly2 deltap kdlyt2 ; associated with second delayr instance ;Do some cross-coupled manipulation: afdbk1 = 0.7 * adly1 + 0.7 * adly2 + ainput1 afdbk2 = -0.7 * adly1 + 0.7 * adly2 + ainput2 ;Feed back signal, associated with first delayr instance: delayw afdbk1 ;Feed back signal, associated with second delayr instance: delayw afdbk2 outs adly1, adly2
Voici un autre exemple de l'opcode deltapi. Il utilise le fichier deltapi.csd.
Exemple 228. Exemple de l'opcode deltapi.
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 ;;;RT audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o deltapi.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gasig init 0 gidel = 1 ;delay time in seconds instr 1 ain pluck .7, 440, 1000, 0, 1 outs ain, ain vincr gasig, ain ;send to global delay endin instr 2 ifeedback = p4 abuf2 delayr gidel adelL deltapi .4 ;first tap (on left channel) adelM deltapi 1 ;second tap (on middle channel) delayw gasig + (adelL * ifeedback) abuf3 delayr gidel kdel line 1, p3, .01 ;vary delay time adelR deltapi .65 * kdel ;one pitch changing tap (on the right chn.) delayw gasig + (adelR * ifeedback) ;make a mix of all deayed signals outs adelL + adelM, adelR + adelM clear gasig endin </CsInstruments> <CsScore> i 1 0 1 i 1 3 1 i 2 0 3 0 ;no feedback i 2 3 8 .8 ;lots of feedback e </CsScore> </CsoundSynthesizer>