waveInProc / Windows audio question...
- by BTR
I'm using the Windows API to get audio input.  I've followed all the steps on MSDN and managed to record audio to a WAV file.  No problem.  I'm using multiple buffers and all that.  I'd like to do more with the buffers than simply write to a file, so now I've got a callback set up.  It works great and I'm getting the data, but I'm not sure what to do with it once I have it.
Here's my callback... everything here works:
// Media API callback
void CALLBACK AudioRecorder::waveInProc(HWAVEIN hWaveIn, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{
    // Data received
    if (uMsg == WIM_DATA)
    {
        // Get wav header
        LPWAVEHDR mBuffer = (WAVEHDR *)dwParam1;
        // Now what?
        for (unsigned i = 0; i != mBuffer->dwBytesRecorded; ++i)
        {
            // I can see the char, how do get them into my file and audio buffers?
            cout << mBuffer->lpData[i] << "\n";
        }
        // Re-use buffer
        mResultHnd = waveInAddBuffer(hWaveIn, mBuffer, sizeof(mInputBuffer[0])); // mInputBuffer is a const WAVEHDR *
    }
}
// waveInOpen cannot use an instance method as its callback, 
// so we create a static method which calls the instance version
void CALLBACK AudioRecorder::staticWaveInProc(HWAVEIN hWaveIn, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
{
    // Call instance version of method
    reinterpret_cast<AudioRecorder *>(dwParam1)->waveInProc(hWaveIn, uMsg, dwInstance, dwParam1, dwParam2);
}
Like I said, it works great, but I'm trying to do the following:
Convert the data to short and copy into an array
Convert the data to float and copy into an array
Copy the data to a larger char array which I'll write into a WAV
Relay the data to an arbitrary output device
I've worked with FMOD a lot and I'm familiar with interleaving and all that.  But FMOD dishes everything out as floats.  In this case, I'm going the other way.  I guess I'm basically just looking for resources on how to go from LPSTR to short, float, and unsigned char.
Thanks much in advance!