0c3df1d430
Added a raw audio decoder, allowing raw audio to be played if the format and frequency is known. Will also load from .raw files on disk, but will assume the format is 16 bit mono and the frequency is 22050 hz Added a tutorial to show how recording and playback can be done. Added the ability for the user to unregister audio codecs that they will not be using. Also added methods to test for the existance of a decoder and get the decoder factory back. Moved cVector3.h to include instead of Headers to make using it in user projects easier (one less include path) Moved the audio format enum to its own header file. Small fix in the wav decoder to prevent the file header from being played as audio data.
94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
#ifndef CAUDIO_H_INCLUDED
|
|
#define CAUDIO_H_INCLUDED
|
|
#include <string>
|
|
#include <iostream>
|
|
#include "AL/al.h"
|
|
#include "AL/alut.h"
|
|
#include <vector>
|
|
|
|
#define BUFFER_SIZE ( 1024 * 32 )
|
|
#include "../include/IAudio.h"
|
|
namespace cAudio
|
|
{
|
|
class cAudio : public IAudio
|
|
{
|
|
public:
|
|
//! play with defualts / the last set values
|
|
bool play();
|
|
//!plays the audio file 2d no distance.
|
|
void play2d(bool loop = false);
|
|
//!plays the audio file and sets it to 3d
|
|
void play3d(bool loop = false, float x = 0.0, float y = 0.0, float z = 0.0, float soundstr = 1.0);
|
|
|
|
//!allows us to set the position or reset the position
|
|
void setPosition(float posx,float posy,float posz);
|
|
//!allows you to set the audio objects velocity
|
|
void setVelocity(float velx,float vely,float velz);
|
|
//!allows us to set the direction the audio should play in
|
|
void setDirection(float dirx,float diry,float dirz);
|
|
//! Sets the audios pitch level
|
|
void setPitch(float pitch);
|
|
//!allows us to set and reset the sound strenght
|
|
void setStrength(float soundstrength);
|
|
//!Set the volume
|
|
void setVolume(float volume);
|
|
//!Set the doppler strength
|
|
void setDopplerStrength(float doop);
|
|
//!Set doppler velocity
|
|
void setDopplerVelocity(float doopx,float doopy,float doopz);
|
|
|
|
//!Seek the audio stream
|
|
void seek(float secs);
|
|
//!release the file handle
|
|
void release();
|
|
//!pauses the audio file
|
|
void pause();
|
|
//!controls altering of the looping to make it loop or not to.
|
|
void loop(bool loop);
|
|
//!stops the audio file from playing
|
|
void stop();
|
|
|
|
//!returns if playing
|
|
bool playback();
|
|
//!check if source is playing
|
|
bool playing();
|
|
//!update the stream
|
|
bool update();
|
|
//!checks to make sure everything is ready to go
|
|
bool isvalid();
|
|
|
|
cAudio(IAudioDecoder* decoder);
|
|
~cAudio();
|
|
|
|
protected:
|
|
private:
|
|
//!empties the queue
|
|
void empty();
|
|
//!checks openal error state
|
|
void check();
|
|
//!reloads a buffer
|
|
bool stream(ALuint buffer);
|
|
//!stringify an error code
|
|
std::string errorString(int code);
|
|
|
|
//! front and back buffers
|
|
ALuint buffers[3];
|
|
//! audio source
|
|
ALuint source;
|
|
//! decoder pointer
|
|
IAudioDecoder* Decoder;
|
|
|
|
//! if the file to be played is going to be streamed
|
|
bool streaming;
|
|
//!if the file is to loop
|
|
bool toloop;
|
|
//!if the file should play
|
|
bool playaudio;
|
|
//!if to pause audio
|
|
bool pauseaudio;
|
|
//!if audio is paused
|
|
bool paused();
|
|
};
|
|
}
|
|
#endif //! CAUDIO_H_INCLUDED
|