Re: Fundamental principle of audio mixing?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux