how to mix two audio signals

48 views (last 30 days)
i have two audio signals y1 ,y2 .Now i wants y3 as mixture of y1 and y2

Accepted Answer

W. Owen Brimijoin
W. Owen Brimijoin on 19 Jan 2015
Edited: W. Owen Brimijoin on 20 Jan 2015
Simple mixing is just adding.
y3 = y1 + y2;
If you want to control the level of each within the mix, then you need to adjust them as follows:
y3 = (y1*y1_level) + (y2*y2_level);
where yx_level is based on the decibel conversion:
yx_level = 10^(level/20);
So to make signal 2 half the amplitude of signal 1, you'd use -6 dB as follows:
y3 = (y1*(10^(0/20)) + (y2*(10^(-6/20));
All of this assumes that the two signals are the same dimensions and have the same starting level.

More Answers (1)

suresh gunarathna
suresh gunarathna on 29 Jan 2020
function [Y,f]=togau(A,B)
[x1,f1]=audioread(A);
[x2,f2]=audioread(B);
[l1,c1]=size(x1);
[l2,c2]=size(x2);
if l1 > l2
l=l2;
else
l=l1;
end
if(f1>=f2)
f=f1;
else
f=f2;
end
G=zeros(1,1);
t=0;
token=0;
for i=1:l
if t==f
if token==0
token=1;
t=0;
else
token=0;
t=0;
end
end
if(token==0)
G(i)=x1(i);
t=t+1;
else
G(i)=x2(i);
t=t+1;
end
end
Y=G;
audiowrite('out.wav',Y,f);
end

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!