NewsWorksSoftwareTextBioContact
background image

Reverb and ambisonics

September 10, 2005

A while ago (24 Aug 2005) Dave Hunt wrote about his experiments using reverbs in ambisonic settings at the Sursound mailing list. His mail suggested a number of different approaches that might be worth testing:

I seem to have been fiddling around with this for ages. There are many possible parameters: basic geometry and dimensions of the space reflection/absorbtion/dispersion characteristics of the surfaces and their distribution their directional characteristics the directional characteristics and position in the ‘space’ of the source etc.

For existing spaces there is the possibilty of B-Format (or higher) impulse
responses and convolution. This is what I gather is used in the Waves
convolution reverb. However I doubt that this is attempting the next to
last of the above parameters (the one before the etc.)

This gives rise to a problem of ‘reverb architecture’. Good synthesised
reverb takes a lot of DSP. Additionally it is often used as a ‘binding’
effect: sources are present in a common space. This and basic economics
leads to a send/return architecture. Individual sources are send to a
‘global’ reverb the basic parameter being ‘how much do you want’. In many
‘stereo’ reverbs the two inputs are summed to mono before being sent to the
reverb engine the stereo output being synthesised.

I’ve seen a couple of plug-in surround reverbs that attempt to get round
this: a panner in Digital Performer and Spat from Ircam (there may well be
others). They amount to a ‘reverb’ per channel and become a bit unusable
as the number of sources increases. The DSP count mounts and having to
adjust more than one to simulate a common space becomes very tedious.

It would seem that there should be a workable compromise solution. Some
sort of early reflection simulation on a per-source basis feeding a global
reverb. The basic dimensions of the space would be common to each source
and the global reverb allowing the space to be manipulated easily.

I started trying to calculate the early reflections of each source from the
six surfaces of a cuboid room delay intensity direction and simple hf
roll-off for each wall and then Ambisonic encode the result. This does
work but if you want it smooth enough to cope with moving sources and to
do several of them it soon gets pretty demanding. Extending this to other
shapes and incorporating secondary and tertiary reflections leads into
rather heavy maths and ray-tracing algorithms which seem to be more
developed in graphics and are mostly non-realtime. I decided to leave this
to better souls than myself.

I also encoutered the problem that you could move the source outside the
space (or the other way round) and the maths would break down. I never
worked out what to do about this apart from to issue a caveat. It still
sounded reasonable.

In the interest of making something that would run on an affordable
computer I tried further heavy compromises. Take Ambisonically encoded
signals from Ambisonic panners scale them by something (either 1 if the
amount of reverb was to be constant with distance or say 1/sqrt(distance)
the amplitude of the direct signal varying as 1/(distance)) and feed them
into a more generalised global reverb.

Then assuming a cuboid room use a delay line for each of WXY&amp Z signals
lengths based on the dimensions of the room. Cross-channel feedback would
help simulate multiple refections. A low pass filter on the inputs and
feedback to the delays simulate hf absorbtion which can be different in
each dimension. Possibly one should ditch the W delay as the W signal
should probably be a combination of the others. The whole thing sounded
denser and nicer with it.

I experimented with following ths early reflection stage with a reverb
simulation for each of WXY&amp Z effectively four mono reverbs. Even using one
written by someone else which was a lot more efficient than my efforts It
was still hungry for DSP. Eventually I realised that this reverb was
probably best regarded as truly global and directionless just W. So
savings could be made by using just one mono reverb fed by all the signals.
This could be made ‘directional’ with a further all-pass filter for each
dimension parameters again based on the room size.

As the output is B-Format it could be further processed through
rotate/tumble/roll to simulate something other than facing one wall in a
box-shaped room. Dominance manipulations can also be done.

None of which really helps simulating or understanding what goes on inside
and outside a forest.

Having worked in a few tents in my time I have also been surprised how
reverberent they can be especially one made of modern synthetic materials.
Obviously there is still a lot of low frequency roll-off in the reverb
response but they can still be surprisingly ‘muddy’.