Reverberation

There is a difference in time between the direct sound and reverberation effect: the sound should reach the closest reflectors to generate reverberation effect. This time interval between the direct sound and the reverberant sound is called “pre-delay”. The effect of pre-delay is especially noticeable for large halls, and pre-delay time to a certain extent characterizes the size of the hall.

It is possible to single out 3 particular stages in the reverberation effect (Talbot-Smith, 2001, p. 43):

  1. Direct sound is perceived by the listener (the sound which is coming straight from the source of the sound).
  2. Early reflection reaches the listener’s ears after the original sound within a period of 80 ms.
  3. The tail consisting of multiple closely spaced reflections reaches the listener (the tail takes longer than 80 ms to build up and fade away).

For creating reverberation effect, a number of methods have been devised:

  • Chamber reverberators
  • Plate reverberators
  • Spring reverberators
  • Digital reverberators
  • Schroeder reverberators

The approach used for creating digital reverberators utilizes a range of signal processing algorithms to generate the reverb effect. The effect is produced by simulated sound reflections, the amplitude of which continuously decreases in time, while the distance between them can vary.

Schroeder’s paper in 1961 was one of the pioneer research works in reverberation. Schroeder analyzed the behaviour of rooms and develop a set of conditions for artificial reverberators. He introduced two main components: comb filters and all-pass filters (Talbot-Smith, 2001, p. 46). These filters are used to delay the input wave at certain frequencies in order to make the sounds reach the listeners at different times.

Comb filters are commonly used in signal processing chains to create exponentially decaying sequences that simulate a single room mode. The purpose of these filters is to create a feedback loop from the output to the input to generate equally spaced, decaying computational series of echoes. The length of these echoes determines the time delay of the reverberation basing on the gain of the feedback loop. The series of comb filters are normally connected in parallel for the purpose of reducing spectral anomalies.

All-pass filters utilized in Schroeder reverberators are applied to increase pulse density generated by parallel comb filters. In such cases, impulse response consists of a large negative impulse followed by a series of positive decaying impulses. In order to avoid the non-uniform amplitude response, a series of three all-pass filters is placed within the signal path.

Reverb unit functionality

The process of reverberation is based on receiving a certain audio signal; the reverb unit can work with signals from a line input or a sound file. The reverb unit can also be used as an independent application with control over the parameters of the reverb. For modification of reverberation parameters, a set of controllers is implemented. Below existing controllers and their functionality are described:

  • Play: playing wave format sound file (*.wav).
  • Stop: stopping wave format sound file (*.wav).
  • Record: recording wave format sound file (*.wav).
  • Select File: selecting wave format sound file (*.wav).
  • Audio: turning on/off master output.
  • Presets: reproducing various atmospheres, generating different reverbs with different values.
  • Level Meters: controlling distortion or clipping of the signals.

Patch Structure

The structure of the signal flow is the following:

  1. Input signal
  2. Signal to comb filters
  3. Delayed signal in the feedback loop
  4. Delayed output signal to all-pass filter
  5. Output from all-pass filter to low pass filter
  6. Mixed signal
  7. Output of the final signal

This patch consists of 4 different sections linked together in order to achieve the final effect. The main part of the patch includes play and record sections connected to the main sub-patches. Thus, sub-patches perform the requested operations and exchange information with the main patch (which implements the reverb unit).

The function of the play section is to reproduce the sound file selected from a particular storage device (the source of the sound) using the “sfplay~” object. The “sfplay~” object is part of the main sub-patch. Similar procedures are implemented in the record section, where the final effect can be recorded on a selected storage device using the “sfrecord~” object. User interface (functions of turning on and off the audio) is implemented through the “ezdac~” object. Volume changes associated with the user interface are performed by the “gain~” object. Analysis of the signal is performed using the “spectroscope~” and “meter~” objects (which communicate with the “gain~” object).

The reverb is produced by 8 comb filters located in the sub-patch. These filters are used to generate the series of echoes creating the reverberation effect. Each comb filter contains the feedback filter to control time delays of the reflection. In addition to this, feedback filters are used to control the distance between the reflections. Thus, feedback filters produce feedback loops which create a delayed output (the amplitude of which is decreasing in the course of time).

The “time delay” knob is used to control the period between reflections. The value of time delay represents an input for the patch and is multiplied by another value. For every sub-patch with the comb filter, time delay defined by the user is multiplied by the original signal and by a given value within the range of 0-0.9. At the next stage, the outcome generated by the comb filters is transferred to “tapin~” and “tapout~” objects as their input. The purpose of these objects is to delay the original signal by a given period of time.

The next section of the reverb unit – all-pass filters – receives the summary signal from the comb filters; the function of all-pass filter section is to diffuse the signals and to construct a subsequent output. This section also contains a feed back and feed forward loops; these loops invert the amplitude of the signal using two multipliers. The function of multiplier objects is to multiply the signal by 0.1 and -0.1. The feed back loop takes the input signal, multiplies it by -0.1 and delays it to add the result to the original signal. The feed forward loop takes the input before it is delayed and multiplies it by 0.1. Finally, the output of both loops is summed to shape the general output signal of the all-pass filter section. In the user interface there are two associated parameters (knobs located on the user interface) designed to control the delay time and feed back loop multiplier.

Within every all-pass filter, the delay line is realized on the basis of “tapin~” and “tapout” objects. The “*~” object connected to the “tapout” object determines the size of the room, and “*~” object connected to the “tapin~” object determines the extent to which the audio signal enters the feedback loop. The feedback scalar must never exceed a value of 1.0; otherwise, the feedback loop will increase in amplitude infinitely.

At the final stage, the signal shaped by the all-pass filters is sent as input to the low pass filters. The purpose of this section is to change the frequency of the signal. The low pass filter receives the frequencies that are above the cut-off frequency. In order to implement functionality for regulating the delay time at the user side, “u-num” object was created. This object stores 7 different settings for the delay time and size, which can be changed using appropriate buttons at the user interface section. Basing on these parameters, 16 delay lines of the low pass filter are adjusted.

Testing

Testing procedures were based on analysis of output wave formats of the system response sound and of the original impulse. Each of the sections was separately tested using Peak software. The premises of testing are presented below:

  • For all-pass filters, the reflection across domain should be present, which was confirmed by the analysis of the output waves;
  • For comb filters, the purpose of testing was to show that the generated pulses do not overlap; tests using prime numbers and the range of tested values between 0/1 ms were performed.

References

Talbot-Smith, Michael. 2001. Audio Engineer’s Reference Book. Focal Press.