Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recording Audio with OpenAL [closed]

Tags:

c++

audio

openal

I've been comparing various audio libraries available in C++. I was wondering, I'm kind of stuck starting with OpenAL. Can someone point out an example program how to record from a mic using OpenAL in C++.

Thanks in advance!

like image 521
Cenoc Avatar asked Jun 16 '10 18:06

Cenoc


2 Answers

Open the input device and start recording using alcCaptureStart and fetch the sample using alcCaptureSamples

#include <OpenAL/al.h>
#include <OpenAL/alc.h>
#include <iostream>
using namespace std;

const int SRATE = 44100;
const int SSIZE = 1024;

ALbyte buffer[22050];
ALint sample;

int main(int argc, char *argv[]) {
    alGetError();
    ALCdevice *device = alcCaptureOpenDevice(NULL, SRATE, AL_FORMAT_STEREO16, SSIZE);
    if (alGetError() != AL_NO_ERROR) {
        return 0;
    }
    alcCaptureStart(device);

    while (true) {
        alcGetIntegerv(device, ALC_CAPTURE_SAMPLES, (ALCsizei)sizeof(ALint), &sample);
        alcCaptureSamples(device, (ALCvoid *)buffer, sample);

        // ... do something with the buffer 
    }

    alcCaptureStop(device);
    alcCaptureCloseDevice(device);

    return 0;
}
like image 180
Nikolaus Gradwohl Avatar answered Nov 16 '22 20:11

Nikolaus Gradwohl


Last time I checked OpenAL it was quite simple. You create the recording device and start the recording going. You then just call the get buffer function. It will wait until there is enough data to fill the buffer and then return when there is enough data.

Why not just look at the "capture" example that comes with the OpenAL SDK ...?

like image 28
Goz Avatar answered Nov 16 '22 21:11

Goz