On Monday 24 September 2007 12:49, Claudio Matsuoka wrote: > On 9/24/07, Nobin Mathew <nobin.mathew@xxxxxxxxx> 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 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel