Use Non-Frames Version Previous Page Next Page
Signal Modifiers: Reverberation

comb, alpass, reverb

  ar      comb       asig, krvt, ilpt[, iskip]
  ar      alpass     asig, krvt, ilpt[, iskip]
  ar      reverb     asig, krvt[, iskip]

Description

An input signal is reverberated for krvt seconds with "colored" (comb), flat (alpass), or "natural room" (reverb) frequency response.

Initialization

ilpt - loop time in seconds, which determines the "echo density" of the reverberation. This in turn characterizes the "color" of the comb filter whose frequency response curve will contain ilpt * sr/2 peaks spaced evenly between 0 and sr/2 (the Nyquist frequency). Loop time can be as large as available memory will permit. The space required for an n second loop is 4n*sr bytes. comb and alpass delay space is allocated and returned as in delay.

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

Performance

These filters reiterate input with an echo density determined by loop time ilpt. The attenuation rate is independent and is determined by krvt, the reverberation time (defined as the time in seconds for a signal to decay to 1/1000, or 60dB down from its original amplitude). Output from a comb filter will appear only after ilpt seconds; alpass output will begin to appear immediately.

A standard reverb unit is composed of four comb filters in parallel followed by two alpass units in series. Loop times are set for optimal "natural room response." Core storage requirements for this unit are proportional only to the sampling rate, each unit requiring approximately 3K words for every 10KC. The comb, alpass, delay, tone and other Csound units provide the means for experimenting with alternate reverberator designs

Since output from the standard reverb will begin to appear only after 1/20 second or so of delay, and often with less than three-fourths of the original power, it is normal to output both the source and the reverberated signal. Also, since the reverberated sound will persist long after the cessation of source events, it is normal to put reverb in a separate instrument to which sound is passed via a global variable, and to leave that instrument running throughout the performance.

Example

  ga1     init 0                          ; init an audio receiver/mixer
  
instr     1                               ; instr (there may be many copies)
  a1      oscili    8000, cpspch(p5), 1   ; generate a source signal
          out       a1                    ; output the direct sound
  ga1     =         ga1 + a1              ; and add to audio receiver
endin

instr     99                              ; (highest instr number executed last)
  a3   reverb       ga1, 1.5              ; reverberate whatever is in ga1
       out          a3                    ; and output the result
  ga1  =            0                     ; empty the receiver for the next pass
endin

Use Non-Frames Version Previous Page Next Page
Signal Modifiers: Reverberation