24 Sep
2007
24 Sep
'07
3:41 p.m.
Thanks a lot
Something like Z = A + B -A.B/normaliztion value
On 9/24/07, Alan Horstmann gineera@aspect135.co.uk wrote:
On Monday 24 September 2007 12:49, Claudio Matsuoka wrote:
On 9/24/07, Nobin Mathew nobin.mathew@gmail.com wrote:
Can any body throw some lights on how audio mixing is done in software? Basic principle?
Basically you add the PCM samples (if they are at the same resolution and sampling rate) and renormalize if needed. The sampling rate conversion can be tricky tho.
I was about to say the same; multiply each sample by the applicable gain and add - as in this extract from Audacity/src/AudioIO.cpp:
{
if (vt->GetChannel() == Track::LeftChannel || vt->GetChannel() == Track::MonoChannel) { float gain = vt->GetChannelGain(0); if (gAudioIO->mEmulateMixerOutputVol) gain *= gAudioIO->mMixerOutputVol; for(i=0; i<len; i++) outputFloats[numPlaybackChannels*i] += gain*tempFloats[i]; } if (vt->GetChannel() == Track::RightChannel || vt->GetChannel() == Track::MonoChannel) { float gain = vt->GetChannelGain(1); if (gAudioIO->mEmulateMixerOutputVol) gain *= gAudioIO->mMixerOutputVol; for(i=0; i<len; i++) outputFloats[numPlaybackChannels*i+1] += gain*tempFloats[i]; }
}
I guess implementing it is always more complicated, though!
Alan