Virtual auditory displays (including computer games, virtual reality systems or computer music workstations) create virtual worlds in which a virtual listener can hear sounds generated from sound sources within these worlds. In addition to reproducing sound as generated by the source, the computer also processes the source signal to simulate the effects of the virtual environment on the sound emitted by the source. In a first-person computer game, the player hears the sound that he/she would hear if he/she were located in the position of the virtual listener in the virtual world. One important environmental factor is reverberation, which refers to the reflections of the generated sound which bounce off objects in the environment. Reverberation can be characterized by measurable criteria, such as the reverberation time, which is a measure of the time it takes for the reflections to become imperceptible. Computer generated sounds without reverberation sound dead or dry. Additionally, reverberation is a very important effect utilized in music composition and rendering. Often a musical voice is recorded “dry” and then reverberation, or other effects, are added afterwards as post processing.
Artificial reverberation algorithms are well known in the art and are described e.g. in Stautner, J., and Puckette, M., “Designing Multi-Channel Reverberators,” Computer Music Journal, Vol. 6, no. 1 (1982); Dattorro, J., “Effect Design (Part 1: Reverberator and Other Filters; Part 2: Delay-Line Modulation and Chorus),” Journal of the Audio Engineering Society, Vol. 45, no. 9–10 (1997); and Jot, J.-M., “Efficient Models for Reverberation and Distance Rendering in Computer Music and Virtual Audio Reality,” Proceedings of the 1997 International Computer Music Conference (1997). The implementation of these algorithms on digital signal processors is based on a network of digital delay lines which are connected together and to the input and output points of the algorithm by feed-forward or feedback connections. Rooms of different sizes and acoustical properties can be simulated by modifying the topology of the network (the number of delay lines and the connections between them), by varying the duration of the delays, or by adjusting the amplification or attenuation coefficients of multipliers and filters inserted on the feed-forward or feedback connections.
As depicted in
Accurate control of decay time has been demonstrated in a class of reverberator topologies, often referred to as “Feedback Delay Networks” (FDN), whose “lossless prototype” can be represented as a parallel bank of delay lines interconnected via a unitary (i.e. energy-preserving) feedback matrix. FDN Reverberators are disclosed in co-pending commonly assigned patent applications entitled ENVIRONMENTAL REVERBERATION PROCESSOR, filed Nov. 2, 1999 (Application Ser. No. 09/441,141) and REVERBERATION PROCESSOR FOR INTERACTIVE AUDIO APPLICATIONS, filed Apr. 11, 2000 (Application Ser. No. 09/547,365), which are hereby incorporated by reference for all purposes. Another popular class of reverberator topologies creates a late reverberation response by using arrangements of delays and all-pass filters inserted in a feedback loop. These topologies are popular due to the efficient generation of echoes and theoretically colorless frequency response of all-pass filters. However, these all-pass reverberators have lacked a mathematically accurate means of controlling decay time characteristics and output level and have had to rely instead on empirical or inaccurate methods.
According to one aspect of the invention, conventional all-pass filters used in a digital audio reverberation processor using cascaded all-pass filters and delays in a recursive feedback loop are replaced by modified all-pass filters, called absorbent all-pass filters, in which an absorbent filter is associated with each delay unit. Absorbent filters are designed to provide accurate, explicit control of reverberation decay time in multiple frequency bands.
According to another aspect of the invention, the output of the late reverberation module is normalized so that the reverberation intensity is independent of the reverberation decay time.
According to another aspect of the invention, reverberation modal density and echo density are also controlled independently from decay time and intensity. These criteria must be satisfied for a reverberator compliant with standard 3-D audio Application Programming Interfaces (APIs): EAX, 13DL2, OpenAL.
Other features and advantages of the invention will be apparent in view of the following detailed description and appended claims.
The invention will now be described with reference to the preferred embodiments.
The complete reverberator 10 is shown in
Two independent output signals are obtained by tapping the chains after each absorbent all-pass filter. In the currently described embodiment, the absorbent all-pass delay lengths are chosen to be mutually prime, and are arranged in each chain in order of increasing length. The decay time is controlled by adjusting the attenuation and low-pass filter in each absorbent all-pass filter and after each delay line according to Equation (3) below. The modal density can be modified by scaling the amount of delay in the absorbent all-pass filters, and the echo density (or “diffusion”) can be modified by changing the all-pass coefficient (g in
An all-pass filter is any filter whose magnitude response is equal to 1 for all frequencies. All-pass filters have a transfer function H(z) that can be represented as a ratio of two polynomials in the complex variable z,
where the coefficients of B are the coefficients of A in reverse order. For example:
There are a number of topologies which can implement transfer functions of this form, and all of them are all-pass.
Any all-pass filter can be made into an absorbent all-pass filter by associating in series with each delay line in the filter an attenuation which may vary with frequency. When an absorbent all-pass filter is used in a late reverberation block these attenuations are used to control the decay time of the late reverberation according to Equations (3) or (4) below. If the attenuations vary with frequency then the decay time can be controlled at multiple frequencies. One method of creating a frequency dependent attenuation is to use both a low-pass filter 80 and an attenuation gain element 82 associated in series with each delay line.
The attenuation gain 82 precisely controls the decay time at low and mid frequencies, and the low-pass filter 80, having a gain at a specified high frequency dependent on the delay length, controls the decay time at the specified high frequency.
The following list of control parameters (compliant with the Level 2.0 Interactive 3D Audio Rendering Guideline (13DL2) of the 3D Working group of the Interactive Audio Special Interest Group) describes briefly what aspects of the reverb algorithm are affected by each reverberation control parameter.
Room:
Room affects the gain of the reverb output (both early reflections and late reverberation.)
Room HF:
RoomHF controls the high frequency attenuation of the low-pass filters at the inputs to the reverberator.
Decay Time:
The decay time of the late reverberation at low frequencies is controlled by adjusting the absorbent attenuations in the absorbent all-pass filters and absorbent delay lines (denoted ‘a’ in the diagrams.)
Decay HF Ratio:
The ratio of high frequency decay time to low frequency decay time in the late reverberation is controlled by adjusting the high-frequency attenuation of the low-pass filters in the absorbent delays and absorbent all-pass filters.
Reflections:
Reflections controls the output gain/attenuation of the early reflections.
Reflections Delay:
Reflections Delay controls the delay time between the input to the reverberator and the first tap of the early reflections.
Reverb:
Reverb controls the output gain/attenuation of the late reverberation.
Reverb Delay:
Reverb Delay controls the delay between the first tap of the early reflections and the input to the late reverberation processor. It also controls the spread of the early reflection taps.
Diffusion:
Diffusion controls the all-pass coefficient (denoted ‘g’ in the diagrams) of the absorbent all-pass filters in the late reverberation processor, thus affecting the echo density.
Density:
Density scales the delay lengths in the late reverb, specifically the delays in the absorbent all-pass filters and absorbent delays, thus affecting the modal density.
HF Reference:
HF Reference sets the frequency at which the input low-pass filters and the low-pass filters in the absorbent delays and absorbent all-pass filters are controlled. In other words Room HF and Decay HF Ratio control the attenuation at HF Reference of these low-pass filters.
The elements in the currently described embodiment of the late reverberation processor 16 of
In the currently described embodiment, the delay lengths of the absorbent all-pass filters are chosen to be mutually prime, and are arranged in each chain in order of increasing length. The decay time is controlled by adjusting the attenuation and low-pass filter in each absorbent all-pass and after each delay line according to Equation (3) below. The modal density can be modified by scaling the amount of delay in the absorbent all-pass filters, and the echo density (or “diffusion”) can be modified by changing the all-pass coefficient (g in
Mixing Matrix:
The mixing matrix 42 mixes the two inputs 36a and 36b to the late reverberation block 16 along with the two feedback signals 40a and 40b into two signals 44a and 44b which feed the late reverb all-pass/delay chains 32a and 32b. The matrix is designed to have a unitary energy gain. The matrix outputs are calculated from the matrix inputs according to the following formulas:
Delay Lengths:
The delay lengths of the absorbent all-pass filters in the late reverberation processor are functions of the Density parameter. Each absorbent all-pass filter has a different delay length with each absorbent all-pass filter in the chain having a longer delay than the previous. These lengths are calculated so that none of the delay lengths are integer multiples of any of the other lengths, and so that the lengths decrease as Density decreases.
All-Pass Coefficient and Diffusion:
The all-pass coefficient of the absorbent all-pass filters (denoted ‘g’ in
g=MAXALLPASS*(Diffusion/100) (2)
Absorbent Gains and Filters:
The absorbent gain in the absorbent all-pass filters and delays (denoted ‘a’ in the diagrams) is a function of the Decay Time property and the length of each particular delay. The absorbent gain can be calculated using the following formulas:
In general, the absorbent gain is implemented by applying to each delay line an attenuation whose logarithm is proportional to the delay length, which has the effect of multiplying the system's impulse response by an exponentially decaying envelope.
Low-Pass Filter:
In general, the decay time can be made frequency-dependent by making each attenuation into a filter Gi(z) whose gain at any frequency ω is dependent on the delay length τi and the desired decay time Tr(ω)) at that frequency:
20 log10|Gi(eiω)|=−60τl/Tr(ω) (4)
In the present embodiment the decay time is controlled at two frequencies by associating a Low Pass Filter (LPF) in series with each absorbent gain.
Both inputs are filtered by a DC-normalized, one-pole low-pass filter, which has the transfer function
The filter coefficient ‘b’ is calculated from the values of RoomHF and HF Reference according to the following pseudo-code:
Taps:
In the late reverb the signal after each absorbent all-pass in a chain is tapped and summed into the output for that side.
Output Level and Normalization:
The summation of the late reverb taps for each side is multiplied by one final value before being sent to the output. This last multiply is used for three purposes: 1) Adjust the output level for the Room property; 2) Adjust the output level of the late reverberation prosessor for the Reverb property; and 3) normalize the energy output of the late reverberation.
The intensity level of the late reverberation response can be controlled independently of the other parameter settings by normalizing the energy gain of the late reverberation network, and adjusting the level of the normalized output. To determine the energy gain of the late reverberation network it is useful to describe the network as a feedback loop with loop energy gain A, and output energy gain B, as in
The energy gain is then the product of the output gain B and a geometric series of A:
EnergyGain=B(1+A+A2+A3+) (6)
The system impulse response is the sum of a series of elementary impulse responses (corresponding to a different numbers of trips through the feedback loop). Equation (6) assumes that these elementary impulse responses are mutually uncorrelated signals, so that the total energy is the sum of their individual energies. This assumption is made because the impulse response of each pass through the two chains of cascaded absorbent all-pass filters has few large interfering terms in the successive impulse response due to the mixing matrix and the use of large mutually prime delay lengths. Since, for finite decay times, the loop energy gain A is less than one, the geometric series can be simplified to 1/(1-A) and the amount of normalization required is:
To calculate the loop energy gain A of the late reverberation processor described in
The loop energy gain A for the entire reverberation loop is then the sum of the energy gains of the two branches:
The left and right output gains BL and BR are calculated by assuming that the total energy gain at the output is the sum of the energy gains after each tap (see
The left and right outputs are normalized by multiplying by NormL and NormR where:
The last remaining step is to calculate the energy gain for each absorbent all-pass filter, which we defined as the sum of the squared impulse response samples. We calculate the energy gain at low frequencies by ignoring the effect of the low-pass filter in the absorbent all-pass filter.
By examining the impulse response of an absorbent all-pass filter (with low-pass filtering disabled) it can be easily shown that the energy gain is a function of the all-pass coefficient g and the absorbent gain a (shown in
It is possible to calculate the energy normalization values in the same routine in which the absorbent gains and filter coefficients are calculated.
Once the normalization values are calculated, the output gain for the left and right branches of the late reverberation processor can be calculated. The output gain takes into account the Room and Reverb levels as well as the energy normalization. There is an additional correction that takes place when the two reverb outputs will be added together to make a mono signal. This additional correction depends on the value of the Diffusion property. The following pseudo code shows how the late reverb output levels of the late reverberation block are calculated in the currently described embodiment:
Note from eq. (10) above that the value of the parameter Norm is equal to the square root of the reciprocal of the energy gain of the late reverberation network. Thus, by amplifying the output signal by Norm the gain of the late reverberation loop is canceled and the output level of the reverberation block is independent of the parameter settings.
For example, as demonstrated in eqs. (10) and (11), in the currently described embodiment the gain of the late reverberation loop is dependent on the value of the Diffusion parameter. The normalization described above cancels the effect of the Diffusion parameter on the loop gain so that echo density can be varied without changing the output level. It then possible to adjust the output level based solely on the values of the Room and Reverb parameters.
As is well known in the art, the block diagrams depicted in
The invention has now been described with reference to the preferred embodiments. Alternatives and substitutions will now be apparent to persons of skill in the art. In particular, the detailed structure of the late reverb described is not necessary to practice the invention. Other topologies for implementing a late reverberation block are well known in the art. Additionally, there are a number of topologies which can implement all-pass filters, and all of them can be made into absorbent all-pass filters by having attenuations associated in series with their delay lines. Accordingly, these different topologies may be utilized in implementations of the invention. Also, for different implementations the calculation of Norm would be varied to take into account different elements. Accordingly, it is not intended to limit the invention except as provided by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4731848 | Kendall et al. | Mar 1988 | A |
5444785 | Izawa et al. | Aug 1995 | A |
5491754 | Jot et al. | Feb 1996 | A |
5496964 | Suzuki | Mar 1996 | A |
5555306 | Gerzon | Sep 1996 | A |
6091824 | Lin et al. | Jul 2000 | A |
6721426 | Kurisu et al. | Apr 2004 | B1 |
Number | Date | Country | |
---|---|---|---|
20020106090 A1 | Aug 2002 | US |