DSPRelated.com
Forums

Digital Mixer.

Started by Ulrich Prakash August 19, 2002
Hi Jeff,

At 09:19 AM 8/29/02 -0500, Jeff Brower wrote:
>Ulrich-
>
>If you can't do that, or you have processing ability only at the
server, 
>then you
>will need to subtract or selectively mix, as you describe.

Of these two(selectively mix,subtract),which one is better?Any suggestions.. ?

>You are approaching echo canceller / adaptive
signal cancellation 
>techniques, which
>are used to improve conferencing quality and provide a constant 2-way 
>sound situation
>(full-duplex).

We would have a central server,where conferencing is done...

Does what I discussed in the previous mail refers to Echo Cancellation at 
the conference server?
Or whether here Echo Cancellation here refers to something else?
	>  But if you do that, you will need a DSP or other fast processor, and
>cannot rely on the PC/sound card to do it.

Yeah,we will use DSP.

Thanks & regards,
Prakash.

>Jeff Brower
>DSP sw/hw engineer
>Signalogic
>
>
>Ulrich Prakash wrote:
> >
> > Hi,
> >
> > Using the summing algorithm,I feel that we are not making MAXIMUM
> > utilization of the mixed Output Channel,if I got it right.
> >
> > That is,though we take a + b + c = 1(for 3 inputs),we have to subtract
one
> > input with coefficient(i.e. same sample)before
sending.Hence,b+c<1 and NOT
> > equal to 1,to have maximum utilization.
> >
> > Let me explain the scenario more in detail:
> >
> > Consider there are 3 users(A,B,C) in a conference and there is ONE
> > conference server which mixes the RTP packets.
> > For 3 inputs,the mixed output,
> >   y = ax1+bx2+cx3,   ------(1)
> > and a+b+c=1.            ---(2)
> >
> > However,we CANNOT send output 'y' as it is,to A,B and C.
> > This is because,A should not hear his own voice,....likewise for B,C
also.
> >
> > Hence we have to recalculate 3 outputs,like
> > y1 = y - ax1
> > y2 = y - bx2  --------------(3)
> > y3 = y - cx3
> > and then send y1(put into RTP packet) to A,y2 to B and y3 to C.
> >
> > If this is the case,
> > y1 = y- ax1 = bx2+cx3 and here b+c <1.
> > Hence here actually the outputs coefficients b+c<1,and NOT
EQUAL to 1 and
> > hence we are not making maximum utilization of the output channel.
> >
> > ALTERNATIVE solution:
> > 
> > The alternative is doing a calculation like this:
> > y1 = b1*x2 + c1*x3 , where b1 + c1 = 1,
> > y2 = a2*x1 + c2*x3 , where a2 + c2 = 1,
> > y3 = a3*x1 + b3*x2 , where a3 + b3 = 1,
> >
> > But this method will involve MORE COMPUTATION TIME due to more no. of
> > multiplications and additions and finding co-efficients,if we mix more
than
> > 3 channels.
> >
> > So must one follow this ALTERNATIVE solution with more computations or
the
> > PREVIOUS one with lesser utilization of the channel?
> >
> > Also please let me know if there is some other way of dealing this 
> situation.
> >
> > Thanks in advance,
> > Prakash.
> >
> > At 11:44 PM 8/21/02 -0500, Jeff Brower wrote:
> > >Kun-
> > >
> > > > Thanks. Where can I find this kind of algorithms as
mentioned below to
> > > > dynamically conferencing?
> > >
> > >Not sure really.  We've done some conferencing work before,
we just
> > >worried about the
> > >2 channels with most energy at any one time.  3 channels worked
Ok, too,
> > >but beyond
> > >that, I seem to recall there was not much to be gained -- if 4
people are
> > >speaking at
> > >once, well, what can you do...it's a mess "in real
life", too.  Also you
> > >have to be
> > >careful how you transition the weights -- you can't have
a,b,c "jerk" to
> > >different
> > >values; use some type of lowpass/averaging filter on the weights,
> > >something that
> > >transitions smoothly, over about 50 to 100 msec.
> > >
> > >Jeff Brower
> > >DSP sw/hw engineer
> > >Signalogic
> > >
> > >
> > >
> > > > > Ahh, now you not mixing, but conferencing -- you should
have said so
> > > > > earlier. You
> > > > > need some type of algorithm that dynamically looks for
"most 
> energetic
> > > > > voice" and
> > > > > give that channel more weight. I've seen some
conferencing algorithms
> > > that
> > > > > will look
> > > > > for most 2 or 3 dominant channels and give them weight.
> > > >
> > > > Jeff Brower wrote:
> > > > >
> > > > > Kun-
> > > > >
> > > > > > I have a related problem: suppose I have 2 ulaw
packet, what is the
> > > > > > algorithm to mix them and create a new ulaw
packet. When remote
> > > > > > client receive and decode it, he can hear both
audio.
> > > > >
> > > > >    y[n] = U(a*u(x1[n]) + b*u(x2[n]))
> > > > >
> > > > > where
> > > > >
> > > > >   U(x) = uLaw(x)          (compress)
> > > > >   u(x) = inverse uLaw(x)  (expand)
> > > > >   a + b = 1
> > > > >   y[n] is packet data
> > > > >
> > > > > Jeff Brower
> > > > > DSP sw/hw engineer
> > > > > Signalogic
> > > > >
> > > > > > --- In audiodsp@y..., "VandeVoorde,
Neil" <nvandevoorde@p...> 
> wrote:
> > > > > > > Last year I went to SPIE's AeroSense
conference and learned about
> > > > > > > Independent Component Analysis and an
application called the
> > > > > > 'Cocktail
> > > > > > > Party.'  Basically, it's a method
to assume that n multiple 
> signals
> > > > > > are
> > > > > > > recorded by n microphones.  ICA is the method
that allows the
> > > > > > signals to be
> > > > > > > separated into n discrete signals.  Perhaps a
look down this path
> > > > > > may be
> > > > > > > what you need...
> > > > > > >
> > > > > > > Regards,/s/neil
> > > > > > >
> > > > > > > Neil E. Van de Voorde, Ph.D.
> > > > > > > Senior Scientist
> > > > > > > Planning Systems Inc.
> > > > > > > 228.689.8775
> > > > > > >
> > > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Jeff Brower [mailto:jbrower@s...]
> > > > > > > Sent: Tuesday, August 20, 2002 7:21 AM
> > > > > > > To: Ulrich Prakash
> > > > > > > Cc: audiodsp@y...
> > > > > > > Subject: Re: [audiodsp] Digital Mixer.
> > > > > > >
> > > > > > > Ulrich-
> > > > > > >
> > > > > > > > In that case,if I need to mix
'm' voice channels(in the form of
> > > > > > RTP
> > > > > > > > packets),then
> > > > > > > > y(n) = a1*x1 + a2*x2 + ... am*xm
> > > > > > > >
> > > > > > > >         = SIGMA ai*xi,where i = 1 to m  
(SIGMA - i don't have
> > > > > > SIGMA
> > > > > > > symbol
> > > > > > > > in my mail editor)
> > > > > > > >
> > > > > > > > And SIGMA ai = 1,where i = 1 to m.
> > > > > > > > In that case,if there are 10 input voice
channels,then the
> > > > > > amplitude of
> > > > > > > > original sample x1 in output y will be
around x1/10.Will 
> this not
> > > > > > affect
> > > > > > > > the fidelity of x1?
> > > > > > >
> > > > > > > Ahh, now you not mixing, but conferencing --
you should have 
> said so
> > > > > > > earlier.  You
> > > > > > > need some type of algorithm that dynamically
looks for "most
> > > > > > energetic
> > > > > > > voice" and
> > > > > > > give that channel more weight.  I've
seen some conferencing
> > > > > > algorithms that
> > > > > > > will look
> > > > > > > for most 2 or 3 dominant channels and give
them weight.
> > > > > > >
> > > > > > > Clearly if you just constantly multiply every
channel by 0.1 you
> > > > > > will not
> > > > > > > hear the
> > > > > > > speaker -- he/she will be averaged with
noise/silence.  Not 
> everyone
> > > > > > talks
> > > > > > > at once,
> > > > > > > right?  Or at least you hope that your
algorithm does not 
> cause them
> > > > > > to do
> > > > > > > that :-)
> > > > > > >
> > > > > > > -Jeff
> > > > > > >
> > > > > > >
> > > > > > > > At 08:20 AM 8/19/02 -0500, Jeff Brower
wrote:
> > > > > > > > >Ulrich Prakash-
> > > > > > > > >
> > > > > > > > > > >Mix == add.  Add your
signals together, like this:
> > > > > > > > > > >
> > > > > > > > > > >   y[n] = a*x1[n] +
b*x2[n]
> > > > > > > > > > >
> > > > > > > > > > >Suggest that you maintain
a + b = 1.
> > > > > > > > > >
> > > > > > > > > > [Prakash]
> > > > > > > > > > Can I take a = 0.5 and b =
0.5,or is there any particular
> > > > > > factor to
> > > > > > > > > > evaluate the value of a and b?
> > > > > > > > > >
> > > > > > > > > > >   Then put a dial on your
MATLAB GUI that allows
> > > > > > > > > > >the user to adjust between
a and b.  All the way to 
> left, a > > > > > > 1.  All
> > > > > > > the
> > > > > > > > > > >way to
> > > > > > > > > > >right, b = 1.
> > > > > > > > > >
> > > > > > > > > > [Prakash]
> > > > > > > > > >  From what you have said,I
assume,if
> > > > > > > > > > x1 = {4,2,6} and x2 =
{8,10,12},and a=0.5,b=0.5then
> > > > > > > > > > y = {2+4, 1+5,
3+6} = {6, 6, 9}
> > > > > > > > > > Is that so straight-forward?
> > > > > > > > >
> > > > > > > > >Yep.
> > > > > > > > >
> > > > > > > > > >Will I hear both samples x1 and
x2 from y output?
> > > > > > > > >
> > > > > > > > >Yep.
> > > > > > > > >
> > > > > > > > > > But I didn't understand
what you mean to the LEFT and RIGHT
> > > > > > here.
> > > > > > > > >
> > > > > > > > >When the user turns the dial.  You
can put a dial (knob) 
> on your
> > > > > > GUI to
> > > > > > > easily
> > > > > > > > >demonstrate the effect; better than
asking your users to enter
> > > > > > values of
> > > > > > > a
> > > > > > > > >and b.
> > > > > > > > >
> > > > > > > > >Jeff Brower
> > > > > > > > >DSP sw/hw engineer
> > > > > > > > >Signalogic
>
>
>_____________________________________
>Note: If you do a simple "reply" with your email client, only the
author 
>of this message will receive your answer.  You need to do a "reply
all" if 
>you want your answer to be distributed to the entire group.
>
>_____________________________________
>About this discussion group:
>
>To Join:  audiodsp-subscribe@audi...
>
>To Post:  audiodsp@audi...
>
>To Leave: audiodsp-unsubscribe@audi...
>
>Archives: http://groups.yahoo.com/group/audiodsp
>
>Other DSP-Related Groups: http://www.dsprelated.com
>
>
>">http://docs.yahoo.com/info/terms/