delay1 — Retarde un signal d'entrée d'un échantillon.
iskip (facultatif, 0 par défaut) -- disposition initiale de l'espace des données de la boucle de retard (voir reson). La valeur par défaut est 0.
delay1 est une forme spéciale de délai qui sert à retarder le signal audio asig d'un seul échantillon. Il est ainsi fonctionnellement équivalent à l'opcode delay mais il est plus efficace à la fois en temps et en espace. Cette unité est particulièrement utile dans le fabrication de filtres non récursifs généralisés.
Voici un exemple des opcodes delay et delay1. Il utilise le fichier delay1.csd.
Exemple 216. Exemple de l'opcode delay1.
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 -odac ;;;RT audio out ; For Non-realtime ouput leave only the line below: ; -o delay1.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by Menno Knevel 2021, after Russel Pinkston sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; original sounds ichoice = p4 if ichoice == 0 then prints "\n--**original beats**--\n\n" aout diskin2 "beats.wav" else prints "\n--**original noise**--\n\n" aout rand .2 endif outs aout, aout endin instr 2 ; Finite Impulse Response (FIR) Filter ichoice = p4 if ichoice == 0 then prints "\n--**FIRST-ORDER LOW-PASS on the beats**--\n\n" aout diskin2 "beats.wav" else prints "\n--**FIRST-ORDER LOW-PASS on the noise**--\n\n" aout rand .2 endif adel1 delay1 aout ; delay 1 sample asig = (.5* aout)+(.5* adel1) ; average 2 succesive inputs outs asig, asig endin instr 3 ; Finite Impulse Response (FIR) Filter ichoice = p4 if ichoice == 0 then prints "\n--**FIRST-ORDER HIGH-PASS on the beats**--\n\n" aout diskin2 "beats.wav" else prints "\n--**FIRST-ORDER HIGH-PASS on the noise**--\n\n" aout rand .2 endif adel1 delay1 aout ; delay 1 sample asig = (.5*aout)-(.5*adel1) ; difference of 2 inputs outs asig, asig endin instr 4 ; Finite Impulse Response (FIR) Filter ichoice = p4 if ichoice == 0 then prints "\n--**SECOND-ORDER NOTCH on the beats**--\n\n" aout diskin2 "beats.wav" else prints "\n--**SECOND-ORDER NOTCH on the noise**--\n\n" aout rand .2 endif adel1 delay1 aout ; x(n - 1) adel2 delay1 adel1 ; x(n - 2) asig = (.5*aout)+(.5*adel2) ; y(n) = .5x(n) + .5x(n - 2) outs asig, asig endin instr 5 ; Finite Impulse Response (FIR) Filter ichoice = p4 if ichoice == 0 then prints "\n--**SECOND-ORDER BAND-PASS on the beats**--\n\n" aout diskin2 "beats.wav" else prints "\n--**SECOND-ORDER BAND-PASS on the noise**--\n\n" aout rand .2 endif adel1 delay1 aout ; x(n - 1) adel2 delay1 adel1 ; x(n - 2) asig = (.5*aout)-(.5*adel2) ; y(n) = .5x(n) - .5x(n - 2) outs asig, asig endin </CsInstruments> <CsScore> i1 0 2 0 i1 3 2 1 s i2 1 2 0 i2 4 2 1 s i3 1 2 0 i3 4 2 1 s i4 1 2 0 i4 4 2 1 s i5 1 2 0 i5 4 2 1 e </CsScore> </CsoundSynthesizer>
Voici le résultat de l'exemple : 5 fois les pulsations et le bruit. 1. Echantillons originaux, 2. passe-bas du premier ordre, 3. passe-haut du premier ordre, 4. réjection du second ordre et 5. passe-bande du second ordre.