Q: OpenAL: mixing alSourcei and alSourceQueueBuffers The engine we use uses a node system to create and play the sounds. The sounds are loaded from files. Then it sets the sound buffers uses alSourcei to play the sounds. 
I am attempting to add the Steam chat code to play sounds from a buffer that is filled with data received over the network. The code uses alSourceQueueBuffers to queue the data.
alSourceQueueBuffers  fails with "Invalid operation". According to the OpenAL guide the reason is: 

There is no current context, an attempt was
  made to add a new buffer which is not the
  same format as the buffers already in the
  queue, or the source already has a static buffer
  attached. 

Of course the sound formats are different. As the chat uses:
alBufferData(nBufferID, AL_FORMAT_MONO16, packet.pData, packet.unSize, VOICE_OUTPUT_SAMPLE_RATE_IDEAL);
alSourceQueueBuffers(pVoiceContext->m_nSource, 1, &nBufferID);

And the SoundNode class:
result = ParseFileFromBuffer(dataBuffer, bufferSize, &waveInfo);

ALenum format = 0;
result = GetWaveALBufferFormat(waveInfo, &alGetEnumValue, (unsigned long*)&format);
alBufferData(m_alBufferId,format,GetWaveData(waveInfo),GetWaveSize(waveInfo),GetWaveFrequency(waveInfo));


...

// In some other class:
alSourcei(m_alSourceId, AL_BUFFER, m_soundData->alGetBufferId());
if(!m_streaming)
{
    setVolume(volume);

    alSourcei(m_alSourceId, AL_LOOPING, (ALint)repeat);

    setDefaultSurroundProperties();

    // Play Source
    alSourcePlay(m_alSourceId);

...
}

Can I do that at all? If not do you have any suggestions?
With XAudio2 I could get away with creating two engines but on Windows at least OpenAL cannot create a second context.
BTW this code will probably need to be used only on Linux.
Please bear with me if my question is stupid. I am a total noob to OpenAL.
