David Griesinger
Lexicon
3 Oak Park
Bedford MA 01730
Abstract
A high quality 5-2-5 matrix encoder and decoder system offers the prospect of
inexpensive compatible media for multichannel sound. The advantages to the consumer,
music and film producers, and broadcasters, are obvious. This paper reports on a system
which offers excellent 5-2-5 codec performance, while preserving or improving the
balance, frontal perspective, and spaciousness of standard stereo recordings. The decoder
provides two or four independent rear outputs, which are capable of complete separation
from the other outputs for a single steered sound effect, and which preserve full left/right
separation during music. Decorrelated signals such as music can be panned forward and
back with full left/right separation. Frontal perspective and the balance between center
material such as dialog and vocals and other material is preserved through careful control
of the center channel level as a function of the center content of the input signal. This
paper will present a mathematical description of the matrix elements of the new decoder,
and discuss some of the psychoacoustic data on which it is based.
Introduction
Although initially developed for multichannel music reproduction, matrix systems have
been relegated to film sound. They are capable of much more. A preliminary design for a
new matrix topology has been tested by the IRT in Munich as a 5-2-5 codec, with
excellent results on a wide range of broadcast material. Although there were audible
differences, the differences were perceived as small changes in localization – and were
sometimes preferred to the original. We have extensively tested the new matrix with
ordinary stereo music material. In almost every case the multichannel matrix
reproduction of the material is preferable to a two-channel presentation. This is a
wonderful way to hear new sounds from your favorite recordings, and amazing sounds
from recordings which have been remixed for 5.1 channels. A high quality 5-2-5 matrix
offers a Rosetta stone for audio reproduction. A single inexpensive circuit can play both
encoded and unencoded music, films, and broadcast material. The advantage to the
consumer is obvious – high quality multichannel recordings available on compatible
CD’s, cassettes, videotapes, etc. The recordings can be played anywhere the consumer
has a player, and yet on a multichannel system true multichannel audio results. Who
wouldn’t want to hear multichannel broadcasts in an automobile?
Why do we need more than two loudspeakers? Research into the spatial acoustics of
small rooms shows that reproduction of stereo music through two speakers is not an
optimal solution, even when the listener is ideally situated. Additional loudspeakers,
driven with signals that provide audible spatial components, can significantly increase the
pleasantness of the sound field, and enlarge the listening area. This is particularly true
when speakers are placed along the sides of the room.
The primary improvement is in the perception of spaciousness. To see how multiple
speakers can help, we can look at the perceptual origin of spaciousness. Spaciousness in
concert halls and in small rooms is primarily determined by the spatial diffusion of
sounds that arrive at least 160ms after the ends of strong foreground sound events. It is
the spatial properties of the background sounds between notes, which determines how
much we feel involved with and enveloped by music.
In a small room the spatial properties of low frequencies are primarily determined by the
ratio of the lateral room modes to the back/front and the vertical modes. It is the
interference between these two modal types that determines how spacious the sound is.
The ratio of the two modal types is strongly influenced by the location and spacing of the
loudspeakers in the room, and in how the recording was made. At higher frequencies the
spatial properties are determined by the frequency of interest and the spacing between the
front loudspeakers. At some frequencies even a relatively close spacing can produce
substantial spaciousness, which is why ordinary stereo works at all.
However at all frequencies it is primarily the REVERBERANT portion of the recorded
sound which is gives rise to the sensation of spaciousness. Thus it is possible to make a
recording in which most of the instruments are pan-potted to positions near the center,
and still have it sound spacious after stereo reverberation is added. In popular music such
recordings are perhaps the rule rather than the exception. It is easy to show that two
ordinary stereo loudspeakers in a small room cannot reproduce the spatial diffusion of a
large hall or concert space. However, if the reverberant portion of the stereo signal can be
reproduced through an array of loudspeakers at the sides of the listener(s) a far more
satisfactory diffuse field can be created. Multiple speakers, if they are driven with
independent decorrelated signals, can create a diffuse sound field both at low frequencies
and at high frequencies.
A multichannel matrix audio system has two goals. First, the system should duplicate as
best as possible the sound balances and localization created by the sound mixer and the
producer. This should be true both for recordings that were mixed for multichannel
surround and for normal stereo recordings. Second, both with five-channel material and
with ordinary two-channel material the playback system should maximize the spatial
diffusion of the background sound field. (A system which was compatible with the
existing Pro-Logic standard would also be plus.)
The first requirement, that localization and balance should be preserved, is decidedly
tricky. For example, stereo recordings are routinely mixed for reproduction without a
center loudspeaker. The sound mixer mixes the center channel information equally into
the left and right channels of the recording. When we reproduce such a recording over a
matrix system that includes a center speaker, we want exactly the same balance as the
original, but we want a substantial amount of the sound power to come from the center
loudspeaker. To achieve this goal we must drive the center speaker with a signal derived
from the sum of the left and right input signals. However this sum contains not only the
original center channel information, but the left and right stereo material as well.
Reproducing the sum through the center loudspeaker must inevitably cause instruments
located to the left and the right of the stereo image to move toward the center. The result
is a loss both of spatial information and of the attractiveness of the mix. It is a goal of our
matrix system to minimize this reduction in the width of the front image.
The goal of maintaining balance is also very important. It is not always possible to
reproduce the original localization of a sound. However it is possible to preserve the
loudness relationships between different sounds, and this must be done if the matrix
system is to be compatible with two-channel stereo. We will explore these issues in detail
in this paper.
The second requirement – that the reverberant component of the input signals should be
reproduced with maximum spatial diffusion – can be achieved by rigorously maximizing
the lateral decorrelation of the various outputs. This maximum lateral separation has been
a design requirement of the Logic7 system from the beginning. The mathematics to
achieve it has been steadily improving. This issue will also be explored in detail.
Matrix decoders in equations and graphics
In an AES paper in October of 1996 we presented the design of a matrix decoder that can
be described by the elements of a two by n matrix, where n is the number of output
channels. Each output can be seen as a linear combination of the two inputs, where the
coefficients of the linear combination are given by the elements in the matrix. In this
paper the elements are identified by a simple combination of letters. The previous paper
described a five-channel and a seven-channel decoder. This paper will describe a fivechannel decoder only.
It is obvious from symmetry that we need to describe the behavior of only six elements –
the center elements, the two left front elements, and the two left side elements. The right
elements can found from the left by simply switching the identity of left and right.
CL:The matrix element for the Left input channel to the Center output
CR:The matrix element for the Right input channel to the Center output
LFL:The Left input channel to the Left Front output
LFR:The Right input channel to the Left Front output
LRL:The Left input channel to the Left Side output
LRR: The Right input channel to the Left Side output
These elements are not constant. Their value varies as a two dimensional function of the
apparent direction of the input sounds. All phase/amplitude decoders determine the
apparent direction of the input by comparing the ratio of the amplitudes of the input
signals. For example, the degree of steering in the right/left direction is determined from
the ratio of the left input channel amplitude to the right input channel amplitude. In a
similar way, the degree of steering in the front/back direction is determined from the ratio
of the amplitudes of the sum and the difference of the input channels. We will not discuss
the method for determining these steering directions in this paper, although Logic7
differs from standard decoders significantly in how this is done. These issues will be
covered in another paper. We assume that the steering directions have been determined.
In this paper we will represent these directions as angles – one angle for the left/right
direction (lr), and one for the front/back (center/surround) direction (cs). The two steering
directions are signed variables. When both lr and cs are zero the input signals are
unsteered – that is, the two input channels are uncorrelated.
When the input consists of a single signal which has been directionally encoded the two
steering directions have their maximum value. However under these conditions they are
not independent. The advantage to representing the steering values as angles is that when
there is only a single signal the absolute value of the two steering values must sum to 45
degrees. When the input includes some decorrelated material along with a strongly
steered signal, the sum of the absolute values of the steering values must be LESS THAN
45 degrees.
|lr| + |cs| <= 45 degrees.
If we plot the values of the matrix elements over a two-dimensional plane formed by the
steering values, the center of the plane will have the value 0,0 and the legal values for the
sum of the steering values will not exceed 45. In practice, due to the behavior of the nonlinear filters it is possible for the sum to exceed 45 – but we try to minimize this overrun.
The mathematics presented here for the matrix elements is well behaved during overruns.
However, when we graph the matrix elements we arbitrarily zero the values when the
legal sum of the input variables is exceeded. This allows us to directly view the behavior
of the element along the boundary trajectory – the trajectory followed by a strongly
steered signal. The graphics were created by Matlab – which insists on labeling the axis
incorrectly. In the Matlab axis the unsteered position is 45,45 (actually 46,46). Hopefully
this will not be overly confusing.
Previous designs for matrix decoders tend to consider only the behavior of the matrix to a
strongly steered signal – that is the behavior of the matrix elements around the boundary
of our surfaces. This is a fundamental error in outlook. When you study real signals –
either film or music – you find that the boundary of the surface is very seldom reached.
For the most part signals wobble around the middle of the plane – slightly forward of the
center. The behavior of the matrix under these conditions is of vital importance to the
sound. When you compare our elements to previous elements one can see a striking
increase in the complexity of the surface in the middle regions. It is this complexity
which is responsible for the improvement in the sound.
Such complexity has a price. Our original (1987 – see the 1989 patent) design was simple
to implement with analog components. The new elements are designed to be almost
entirely described by one-dimensional lookup tables, which are trivial in a digital
implementation. Designing an analog version with similar performance will not be easy.
In this paper we contrast the several different versions of the matrix elements. The
earliest are elements from our 1989 patent. These elements were used in our first
surround processor, and are identical to the elements of a standard surround processor in
the left, center, and right channels. In our design the surround channel is treated
symmetrically to the center channel. In the standard (Dolby) decoder the surround
channel is treated differently, and this issue will be discussed at length later in the paper.
The elements presented here are not always correctly scaled. In general they are
presented so the unsteered value of the of the non-zero matrix elements are for any given
channel is one. In practice the elements are usually scaled so the maximum value of each
element is one or less. In any case, in a final product the scaling of the elements is
additionally varied in the calibration procedure. The matrix elements presented here
should be assumed be scalable by appropriate constants.
The left front matrix elements in our ’89 patent
Assume cs and lr are the steering directions in degrees in the center/surround and
left/right axis respectively.
In the ’89 patent the equations for the front matrix elements are given as:
In the left front quadrant
LFL = 1 – 0.5*G(cs) +.41*G(lr)
LFR = -0.5*G(cs)
In the right front quadrant
LFL = 1-0.5*G(cs)
LFR = -0.5*G(cs)
In the left rear quadrant
LFL = 1-0.5*G(-cs)+.41*G(lr)
LFR = +.5*G(-cs)
In the right rear quadrant
LFL = 1-0.5*G(-cs)
The function G(x) is described
in the 89 patent, and specified
in the ’91 patent. It varies from
0 to one as x varies from 0 to
45 degrees. When steering is in
the left front quadrant (lr and cs
are both positive) G(x) can be
shown to be equal to 1-|r|/|l|
where |r| and |l| are the right and
left input amplitudes. See
Figure 1 and Figure 2.
In the recent AES paper these
elements were improved by
adding the requirement that the
loudness of unsteered material
should be constant regardless of
the direction of the steering.
Mathematically this means that
the root mean square sum of the
lfl and lfr matrix elements
should be a constant. It was
pointed out in the paper that
this goal should be relaxed in
the direction of the steering –
that is, when the steering is full
left, the sum of the squares of
the matrix elements should rise
by 3dB. Figure 3 shows that the
above matrix elements do not
meet this requirement.
Figure 1: The LFL matrix element from the ’89 patent and Dolby
Pro-Logic, scaled so the maximum value is one. Note the matrix
element consists of simple intersecting surfaces. The value is 0.71
in the center of the plane, and rises to one at the left vertex. The
values at Rear and Center are 0.5.
Figure 2: The lfr matrix element from the ’89 patent and Dolby ProLogic, scaled similarly to figure 1. The minimum value and max
value is +-0.5. Note that at the center and rear vertexes the value
here when combined with the values in the matrix element in figure
1 will cause exact cancellation of a strongly steered signal.
Complete cancellation also occurs for signals that follow the
boundary trajectory for positive values of lr – in this drawing the
trajectory from center to right, and from right to rear.
The 1996 AES paper corrected the
amplitude errors in figure 3 by
replacing the function G(x) in the
matrix equations with sines and
cosines: See Figure 4.
For the left front quadrant
LFL = cos(cs) + .41*G(lr)
LFR = -sin(cs)
For the right front quadrant
LFL = cos(cs)
LFR = -sin(cs)
For the left rear quadrant
LFL = cos(-cs) + .41*G(lr)
LFR = sin(-cs)
For the right rear quadrant
LFL = cos(-cs)
LFR = sin(-cs)
Figure 3: the square root of the sum of the squares of lfl and lfr
from the ’89 patent, scaled so the maximum value is one.
Notice that the value is constant at .71 along the axis from
unsteered to right. The unsteered to left rises 3dB to the value
one, and the unsteered to center or to rear falls by 3dB to the
value 0.5. The rear direction is identical to the center direction.
Figure 4: The square root of the sum of the squares of the lfl
and lfr matrix elements from the AES paper, scaled so the max
value is 1. Note the constant value of .71 in the entire right half
of the plane, and the gentle rise to one toward the left vertex.
Improvements to the left front matrix elements
In March of 1996 we made several changes to these matrix elements. We kept the basic
functional dependence, but added an additional boost along the cs axis in the front, and
added a cut along the cs axis in the rear. The reason for the boost was to improve the
performance with stereo music that was panned forward. The purpose of the cut in the
rear was to increase the separation between the front channels and the rear channels when
stereo music was panned to the rear.
For the front left quadrant
LFL = (cos(cs) + 0.41*G(lr))*boost1(cs)
LFR = (-sin(cs))*boost1(cs)
For the right front quadrant
LFL = (cos(cs) )*boost1(cs)
LFR = (-sin(cs))*boost1(cs)
For the left rear quadrant
LFL = (cos(-cs) + 0.41*G(lr))/boost(cs)
LFR = (sin(cs))/boost(cs)
For the right rear quadrant
LFL = (cos(cs))/boost(cs)
LFR = (sin(cs))/boost(cs)
The function G(x) is the same as the one in the ’89 patent. When expressed with angles as
an input, it can be shown to be equal to G(x) = 1-tan(45-x).
The function boost1(cs) as used in March 1997 was a linear boost of 3dB total applied
over the first 22.5 degrees of steering, decreasing back to 0dB in the next 22.5 degrees.
Boost(cs) is given by corr(x) in the Matlab code below.
% calculate a boost function of +3dB at 22.5 degrees
% corr(x) goes up 3dB and stays up. corr1(x) goes up then down again
for x = 1:24; % x has values of 1 to 24
corr(x) = 10^(3*(x-1)/(23*20)); % go up 3dB over this range
corr1(x) = corr(x);
end
for x = 25:46 % go back down for corr1 over this range
corr(x) = 1.41;
corr1(x) = corr(48-x);
end
See Figure 5.
Figure 5: The Left front left matrix
element in March of 1997. Note that the
boost as the steering moves toward
center is applied both along the lr=0 axis,
and along the left to center boundary.
Note also the reduction in level as the
steering moves to the rear.
The performance of the March circuit can be improved. The first problem is in the
behavior of the steering along the boundaries between left and center, and between right
and center. As a strong single signal pans from the left to the center, it can be seen in
figure 5 that the value of the lfl matrix element increases to a maximum half-way
between left and center. This increase in value is an unintended consequence of the
deliberate increase in level for the left and right main outputs as a center signal is added
to stereo music.
When a stereo signal is panned forward it is desirable that the left and right front outputs
should rise in level to compensate for the removal by the matrix of the correlated
component from these outputs. However the method used to increase level under these
conditions should only occur when the lr component of the inputs is minimal – that is
when there is no net left or right steering. The method chosen to implement this increase
in March of 1997 was independent of the value of lr, and resulted in an increase in level
when a strong signal panned across the boundary.
The boost is only needed along the lr=0 axis. When lr is non zero the matrix element
should not be boosted. This problem can be solved by using an additive term to the
matrix elements, instead of a multiply. We define a new steering index, the boundary
limited cs value with the following Matlab code:
Assume both lr and cs > 0 – we are in the left front quadrant
(assume cs and lr follow the matlab conventions of varying from 1 to 46)
% find the bounded c/s
if (cs < 24)
bcs = cs-(lr-1);
if (bcs<1) % this limits the maximum value
bcs = 1;
end
else
bcs = 47-cs-(lr-1);
if (bcs <1)
bcs = 1;
end
end
If cs < 22.5 and lr =0, (In matlab convention cs < 24 and lr = 1) bcs is equal to cs.
However as lr increases bcs will decrease to zero. If cs > 22.5, as lr increases bcs also
decreases.
Now to find the correction function needed, we find the difference between the boosted
matrix elements and the non-boosted ones, along the lr=0 axis. We call this difference
cos_tbl_plus and sin_tbl_plus. (This code is written in a matlab, where variables are
multivalued vectors. It takes some getting used to.)
a = 0:45 % define a vector in one degree steps. a has the values of 0 to 45 degrees
a1 = 2*pi*a/360; % convert to radians
% now define the sine and cosine tables, as well as the boost tables for the front
sin_tbl = sin(a1);
cos_tbl = cos(a1);
cos_tbl_plus = cos(a1).*corr1(a+1);
cos_tbl_plus = cos_tbl_plus-cos_tbl; % this is the one we use
cos_tbl_minus = cos(a1)./corr(a+1);
sin_tbl_plus = sin(a1).*corr1(a+1);
sin_tbl_plus = sin_tbl_plus-sin_tbl; % this is the one we use
sin_tbl_minus = sin(a1)./corr(a+1);
sin_tbl_plus and cos_tbl_plus are the difference between a plain sine and cosine, and the
boosted sine and cosine. We now define
LFL = cos(cs) + .41*G(lr) + cos_tbl_plus(bcs)
LFR = -sin(cs) -sin_tbl_plus(bcs)
LFL and LFR in the front right quadrant are similar, but without the +.41*G term. These
new definitions lead to the matrix element in Figure 6.
Figure 6: The new left front left matrix
element has the correct amplitude along
the left to center boundary, as well as
along the center to right boundary.
The steering in the rear quadrant is not optimal either. When the steering is toward the
rear the above matrix elements are given by:
LFL = cos_tbl_minus(-cs) + .41*G(-cs)
LFR = sin_tbl_minus(-cs)
These matrix elements are very nearly identical to the elements in the ’89 patent.
Consider the case when a strong signal pans from left to rear. The ‘89 elements were
designed so that there is complete cancellation of the output from the front left output
only when this signal is fully to the rear (cs = -45, lr = 0). However in a Logic 7 decoder
it would be desirable that the output from the left front output should be zero when the
encoded signal reaches the left rear direction (cs = -22.5 and lr = 22.5). The left front
output should remain at zero as the signal pans further to full rear. The matrix elements
used in March 1997, – the ones above – result in the output in the front left channel being
about –9dB when a signal is panned to the left rear position. This level difference is
sufficient for good performance of the matrix, but it is not as good as it could be.
This performance can be improved by altering the LFL and LFR matrix elements in the
left rear quadrant. Notice that here we are concerned with how the matrix elements vary
along the boundary between left and rear. The mathematical method given in the AES
paper can be used to find the behavior of the elements along the boundary. Let us assume
that the amplitude of the left front output should decrease with the function F(t) as t
varies from 0 (left) to –22.5 degrees (left rear). The method gives the matrix elements
LFL = cos(t)*F(t) -+ sin(t)*(sqrt(1-F(t)^2))
LFR = -(sin(t)*F(t) +- cos(t)*(sqrt(1-F(t)^2)))
If we choose F(t) = cos(4*t) and choose the correct sign, these simplify to
LFL = cos(t)*cos(4*t)+sin(t)*sin(4*t)
LFR = -(sin(t)*cos(4*t)-cos(t)*sin*4*t)
See Figure 7.
Figure 7: The behavior of LFL and LFR along
the rear boundary between left and full rear.
(The slight glitch is due to the absence of a
point at 22.5 degrees.)
These elements work fine – the front left output is reduced smoothly to zero as t varies
from 0 to -22.5 degrees. We want the output to remain at zero as the steering continues
form 22.5 degrees to 45 degrees (full rear.) Along this part of the boundary,
LFL = -sin(t)
LFR = cos(t)
Note that these matrix elements are a far cry from the matrix elements along the lr=0
boundary, where in the AES paper the values were
LFL = cos(cs)
LFR = sin(cs)
We need a method of smoothly transforming the above equations into the equations along
the boundary as lr and cs approach the boundary. A linear interpolation could be used. In
the processor used in Lexicon products, where multiplies are expensive, a better strategy
is to define a new variable – the minimum of lr and cs:
% new - find the boundary parameter
bp = x;
if (bp > y)
bp = y;
end
and a new correction function which depends on bp: