delay1

delay1 — Delays an input signal by one sample.

Description

Delays an input signal by one sample.

Syntax

ares delay1 asig [, iskip]

Initialization

iskip (optional, default=0) -- initial disposition of delay-loop data space (see reson). The default value is 0.

Performance

delay1 is a special form of delay that serves to delay the audio signal asig by just one sample. It is thus functionally equivalent to the delay opcode but is more efficient in both time and space. This unit is particularly useful in the fabrication of generalized non-recursive filters.

Examples

Here is an example of the delay and delay1 opcodes. It uses the file delay1.csd.

Example 216. Example of the delay1 opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<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>


This shows the result of the example: 5 times the beats and the noise. 1.Original samples, 2.first-order lowpass, 3.first-order highpass, 4.second-order notch and 5.second-order bandpass.

See Also

delay, delayr, delayw

Credits

Author: Barry Vercoe