25#ifndef _SKYLICHTAUDIO_AUDIOEMITTER_
26#define _SKYLICHTAUDIO_AUDIOEMITTER_
28#include "Driver/ISoundSource.h"
29#include "Driver/ISoundDriver.h"
31#include "Decoder/IAudioDecoder.h"
32#include "Thread/IMutex.h"
34#define SKYLICHTAUDIO_MIN_PITCH 0.25f
35#define SKYLICHTAUDIO_MAX_PITCH 4.0f
37#define SKYLICHTAUDIO_MIN_GAIN 0.0f
38#define SKYLICHTAUDIO_MAX_GAIN 4.0f
73 std::string m_fileName;
83 ISoundSource::ESourceState m_state;
84 IAudioDecoder::EDecoderType m_decodeType;
86 unsigned char** m_buffer;
87 unsigned char* m_decodeBuffer;
89 float m_bufferLengthTime;
93 int m_allocBufferSize;
110 float m_stopWithFade;
111 float m_playWithFade;
116 static IAudioDecoder::EDecoderType getDecode(
const char* fileName);
120 EStatus initEmitter();
122 void updateSourceBuffer();
127 CAudioEmitter(
const char* file,
bool cache,
ISoundDriver* driver);
129 virtual ~CAudioEmitter();
146 return m_name.c_str();
197 virtual void play(
bool fromBegin =
true);
309 return m_currentTime;
virtual void play(bool fromBegin=true)
Start or resume playback.
virtual void pause()
Pause playback.
ISoundSource::ESourceState getState()
Get current state of the sound source.
Definition CAudioEmitter.h:171
virtual void setGain(float g)
Set playback volume (gain).
virtual void reset()
Reset emitter state to Stopped.
bool isPlaying()
Check if the sound is currently playing.
virtual void seek(float time)
Seek to a specific time in the audio.
virtual void setLoop(bool loop)
Enable or disable looping.
virtual void setPitch(float p)
Set playback pitch.
bool init()
Initialize the emitter (streaming and decoding).
virtual bool isLoop()
Check if looping is enabled.
Definition CAudioEmitter.h:248
void initDefaultValue()
Initialize default values for the emitter.
virtual void stop()
Stop playback.
virtual float getPitch()
Get current playback pitch.
Definition CAudioEmitter.h:263
void setRollOff(float rollOff)
Set roll-off factor for 3D distance attenuation.
void stopWithFade(float time)
Stop playback with a fade-out effect.
float getCurrentTime()
Get current playback time in milliseconds.
Definition CAudioEmitter.h:307
IAudioDecoder * getDecoder()
Get underlying audio decoder.
Definition CAudioEmitter.h:316
void playWithFade(float gain, float time)
Start playback with a fade-in effect.
const char * getName()
Get name of this emitter.
Definition CAudioEmitter.h:144
void setName(const char *name)
Set name for this emitter.
Definition CAudioEmitter.h:135
virtual float getGain()
Get current playback volume (gain).
Definition CAudioEmitter.h:278
IAudioDecoder::EDecoderType getDecoderType()
Get decoder type.
Definition CAudioEmitter.h:153
void setPosition(float x, float y, float z)
Set 3D position of the sound source.
IStream * getStream()
Get underlying stream.
Definition CAudioEmitter.h:162
virtual void update()
Update the emitter state, handles decoding and streaming buffers. This is called automatically by CAu...
virtual void stopStream()
Stop streaming and decoding.
Definition IAudioDecoder.h:46
Definition ISoundDriver.h:36
Definition ISoundSource.h:93
Interface for an audio data stream (File, Memory, etc.).
Definition IStream.h:107
Handles all core audio functionality.
Definition AudioDebugLog.h:31
The foundation for thread and process handling.
Definition CNullMutex.h:32
Everything in the Skylicht Engine. You can start by looking at the topics.
Definition AudioDebugLog.h:29
Definition ISoundSource.h:72